编写一个从111文件读取域名通过ping获取到ip地址后将ip地址存放到222文件的shell脚本
时间: 2023-03-01 22:52:36 浏览: 122
以下是一份示例的shell脚本代码:
```
#!/bin/bash
# 从文件111读取域名列表
for domain in $(cat 111); do
# 通过ping获取域名的IP地址
ip=$(ping -c 1 $domain | grep PING | awk '{print $3}' | tr -d '()')
# 将获取到的IP地址存入文件222
echo "$ip" >> 222
done
```
说明:
- `#!/bin/bash` 表示使用bash shell编写该脚本。
- `for domain in $(cat 111); do` 表示循环读取文件111中的每一行,并将其作为变量`domain`。
- `ip=$(ping -c 1 $domain | grep PING | awk '{print $3}' | tr -d '()')` 表示使用`ping`命令获取域名对应的IP地址,并将结果赋值给变量`ip`。
- `echo "$ip" >> 222` 表示将变量`ip`的值追加到文件222的末尾。
请注意,在执行该脚本之前,您需要确保文件111和222存在,并且有相应的读写权限。
相关问题
使用shell脚本完成以下功能 读取hosts.txt中文件,其中每一行为域名或ip地址 输出正在测试的域名或ip地址 对每个域名或地址,使用ping命令测试连通性 (ping 命令 -c 参数用于设置ping次数 )
好的,以下是一个可能的实现方式:
```bash
#!/bin/bash
# 读取 hosts.txt 文件每一行的内容
while read -r line; do
echo "正在测试 $line"
# 使用 ping 命令测试连通性
ping -c 3 "$line"
done < hosts.txt
```
其中,`while read -r line; do` 会逐行读取 `hosts.txt` 文件的内容,并将每一行的内容存储在 `$line` 变量中,然后使用 `echo` 命令输出正在测试的域名或IP地址。接着使用 `ping` 命令测试连通性,`-c` 参数用于设置 ping 的次数。最后,`done < hosts.txt` 表示读取文件操作结束。
您可以将以上代码保存为一个 `.sh` 文件,比如 `ping_hosts.sh`,然后在终端中使用 `bash ping_hosts.sh` 或 `./ping_hosts.sh`(前提是该文件具有执行权限)来运行脚本。
写一个脚本,读取一个包含IP地址的文件,通过ping命令测试文件中的指定的IP地址的所有主机是否在线, 每个IP只ping 两个包,如果在线,就显示“某ip is up”,如果不在线,就显示“某ip is down用shell脚本写
以下是一个简单的Shell脚本示例,它将读取一个包含IP地址的文件,并对每个IP地址进行ping操作。这个脚本假设你已经有一个名为`ips.txt`的文件,其中一行一个IP地址。
```bash
#!/bin/bash
# 用于存储结果的数组
results=()
# 遍历IP地址文件
while read -r ip; do
# 使用ping发送两个数据包并记录返回状态
ping_result=$(ping -c 2 $ip | grep "received" | awk '{print $4}' | cut -d'(' -f2 | cut -d')' -f1)
# 判断主机是否在线
if [[ "$ping_result" -eq "2" ]]; then
echo "$ip is up"
else
echo "$ip is down"
fi
# 将结果添加到数组中
results+=("$ip $ping_result")
done < ips.txt
# 输出所有IP的结果
for result in "${results[@]}"; do
echo "$result"
done
#
阅读全文