在bash脚本的IP地址的最后几位追加一个变量
因此,我可以使用while循环通过SSH在网络中的每个IP地址上进行连接,然后在IP末尾的该循环中附加计数器,如下所示:在bash脚本的IP地址的最后几位追加一个变量,bash,ssh,Bash,Ssh,因此,我可以使用while循环通过SSH在网络中的每个IP地址上进行连接,然后在IP末尾的该循环中附加计数器,如下所示: #!/bin/bash while [ 0 -lt 1] do a=`expr $a + 1` ssh user@172.18.10.$a echo connected done 我几乎肯定这是错的,所以我正试图找到正确的方法来做。 是否可以用一种更简单的方式来完成,比如像列表一样使用ARP表并循环使用它 #!/bin/bash for a in
#!/bin/bash
while [ 0 -lt 1]
do
a=`expr $a + 1`
ssh user@172.18.10.$a
echo connected
done
我几乎肯定这是错的,所以我正试图找到正确的方法来做。
是否可以用一种更简单的方式来完成,比如像列表一样使用ARP表并循环使用它
#!/bin/bash
for a in $(seq 255)
do
ssh user@172.18.10.$a true
echo "Connected to 172.18.10.$a"
done
seq 255
输出一个从1到255的数字序列,然后迭代将变量a
设置为每个值
ssh命令中的
true
是告诉ssh执行一个命令,然后退出。如果未指定命令,它将启动交互式会话,直到您退出会话后才会结束。您可以用希望在每台主机上执行的任何命令来代替它。如果您真的想检查连接是否成功,您需要这样的命令
#!/bin/bash
for a in $(seq 255)
do
ssh user@172.18.10.$a true && echo "Connected to 172.18.10.$a"
done
[0-lt 1]
中缺少空格,是否输入错误?@JoseRicardoBustosM。是的,对不起,ssh
行没有问题。不过,您应该学会使用bash
算术表达式,而不是expr
。您有一个无限循环<代码>0-lt 1将始终为真。它应该类似于,而[$a-lt 256]
expr
,因为算术在任何符合POSIX的现代shell中都是不必要的。改用a=$((a+1))
bash也有C风格的for循环:for((a=1;a)