[root@localhost ~]# vim CheckHosts.sh #!/bin/bash HLIST=$(cat ~/ipaddrs.txt) for IP in $HLIST do ping -c 3 -i 0.2 -W 3 $IP &> /dev/null if [ $? -eq 0 ] then echo "Host $IP is On-line." else echo "Host $IP is Off-line." fi done
时间: 2023-12-03 13:43:48 浏览: 42
这是一个 Bash 脚本,称为 CheckHosts.sh。它从文件 ~/ipaddrs.txt 中读取 IP 地址列表,并对每个 IP 执行 ping 测试。如果 ping 命令返回成功,则显示“Host $IP is On-line.”,否则显示“Host $IP is Off-line.”。
该脚本使用了 Bash 中的循环和条件语句。在循环中,$HLIST 变量包含了从文件中读取的 IP 地址列表,使用 for 循环依次遍历每个地址。在每次循环中,ping 命令被执行三次,超时时间为 3 秒,并且将输出重定向到 /dev/null 中以避免在控制台中显示。如果 ping 命令返回值为 0,则表示主机在线,否则主机离线。根据 ping 命令的返回值,使用条件语句显示相应的消息。
你可以通过运行该脚本来检查 IP 地址列表中的主机是否在线。要运行该脚本,请在终端中输入以下命令:
```
bash CheckHosts.sh
```
请注意,在脚本运行之前,你需要先创建一个名为 ipaddrs.txt 的文件,并在其中列出要测试的 IP 地址列表。
相关问题
[root@bogon ~]# vim dd.sh #!/bin/bash DF=$(ansible 192.168.1.* -m command -a "df -hT") export aa=`$DF | grep "/$" | awk '{print $5}' | awk '{print $1}'` echo "磁盘空间已使用:" $aa if [ $aa = 50 ] then echo "磁盘已经沾满不能存储数据!!!" fi 有没有错误
这段脚本可能存在一些错误。首先,`ansible`命令的使用似乎不正确,因为该命令应该以等号分隔参数和值,而不是使用空格。另外,`$DF`变量应该使用`$()`或者````进行命令替换,而不是直接使用`$DF`。
以下是修正后的脚本:
```bash
#!/bin/bash
DF=$(ansible 192.168.1.* -m command -a "df -hT")
aa=$(echo "$DF" | grep "/$" | awk '{print $5}' | awk '{print $1}')
echo "磁盘空间已使用: $aa"
if [ "$aa" = "50" ]; then
echo "磁盘已经沾满不能存储数据!!!"
fi
```
请注意,我只是修复了一些可能存在的语法错误,但无法保证脚本是否符合您的需求。请根据实际情况进行调整和测试。
[root@localhost ~]# vim user.txt [root@localhost ~]# newusers < user.txt newusers: line 1: invalid line newusers: line 2: invalid line newusers: line 3: invalid line newusers: error detected, changes ignored
这个错误可能是因为 user.txt 文件中包含了无效的行。请检查一下文件格式是否正确。每一行应该以用户名开头,然后是冒号和密码(或 *),最后是用户 ID、组 ID、全名和主目录路径,每个字段之间用逗号分隔。例如:
```
user1:x:1001:1001:User One:/home/user1:/bin/bash
user2:x:1002:1002:User Two:/home/user2:/bin/bash
```
确认文件格式正确后,再次运行 `newusers < user.txt` 命令。