发送命令通过ssh与参数
问题描述:
我想通过ssh发出命令与参数,但外壳没有正常扩展命令任何想法我在做什么错这个发送命令通过ssh与参数
for i in 71 72 73 74 75
do
for server in server1 server2
do
somestr="Some String"
echo "$server hdiskpower$i \c" ; ssh $server "lsattr -El hdiskpower$i |grep $somestr "
done
done
答
必须使用-t
参数来设置ssh使用伪tty。如果您想在远程机器上运行该命令,你会通过
ssh $server -t "lsattr -El hdiskpower$i|grep $somestr"
答
如果您传递一些变量来远程服务器的指令内做到这一点,那么这些变量必须在该远程服务器定义。
像,如果你在脚本中硬编码命令,如 "echo "$server hdiskpower$i \c" ; ssh $server lsattr -El hdiskpower71 |grep XYZ"
那么它肯定适合你。
同时,我会努力使它适用于变量。
答
我认为这是你需要的: 首先你需要在你的机器上安装sshpass
。 那么你可以编写自己的脚本:
while read pass port user ip; do
sshpass -p$pass ssh -p $port [email protected]$ip <<ENDSSH1
COMMAND 1
.
.
.
COMMAND n
ENDSSH1
done <<____HERE
PASS PORT USER IP
. . . .
. . . .
. . . .
PASS PORT USER IP
____HERE
丹尼斯感谢编辑的脚本更易读现在 – Lisa 2010-07-28 07:14:53