使用参数通过ssh发送命令

时间:2010-07-28 05:57:32

标签: unix shell scripting

我正在尝试使用参数通过ssh发送命令,但shell无法正确扩展命令任何想法我在做错了什么

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

3 个答案:

答案 0 :(得分:1)

如果要将某个变量传递给命令中的远程服务器,则必须在该远程服务器上定义这些变量。

就像,如果你在脚本中硬编码命令一样 "echo "$server hdiskpower$i \c" ; ssh $server lsattr -El hdiskpower71 |grep XYZ"那么它肯定适合你。

与此同时,我将努力使其适用于变量。

答案 1 :(得分:0)

您必须使用-t参数将ssh设置为使用伪tty。如果您想在远程计算机上运行该命令,可以通过

进行
ssh $server -t "lsattr -El hdiskpower$i|grep $somestr"

答案 2 :(得分:0)

我认为这就是你所需要的: 首先,您需要在计算机上安装sshpass。 然后你可以编写自己的脚本:

while read pass port user ip; do
sshpass -p$pass ssh -p $port $user@$ip <<ENDSSH1
    COMMAND 1
    .
    .
    .
    COMMAND n
ENDSSH1
done <<____HERE
    PASS    PORT    USER    IP
      .      .       .       .
      .      .       .       .
      .      .       .       .
    PASS    PORT    USER    IP    
____HERE