我正在尝试包括“ for”或“ while”循环以输入IP列表
即使我尝试了以下解决方案, Run expect command inside while loop in shell script
#!/bin/bash
while read p; do
{
/usr/bin/expect<<EOF
set timeout 3
spawn ssh -q -o StrictHostKeyChecking=no "root@192.168.102.$p" cat
/sys/class/net/enp0s3/address
expect "Password:"
send "xxxx\r";
interact
EOF
}
done<IP
下面是输出,在这里您可以看到每次迭代都没有执行命令,仅在终端上打印/回显
spawn ssh -q -o StrictHostKeyChecking=no root@192.168.102.105
cat /sys/class/net/enp0s3/address
root@192.168.102.105's password: spawn ssh -q -o StrictHostKeyChecking=no
root@192.168.102.106 cat /sys/class/net/enp0s3/address
root@192.168.102.106's password: spawn ssh -q -o
StrictHostKeyChecking=no root@192.168.102.107 cat /sys/class/net/enp0s3/address
我可以知道为什么ssh参数没有生效。我尝试使用单引号/双引号没有运气。