Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在bash脚本的IP地址的最后几位追加一个变量_Bash_Ssh - Fatal编程技术网

在bash脚本的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

因此,我可以使用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 $(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)