是否有一种在sshpass
中使用多个命令的方法,我尝试使用不同的组合,但它会引发错误。
$ sudo sshpass -p $password ssh -t -oStrictHostKeyChecking=no $username@$ipaddress << EOF
command_one
command_two
command_three
EOF
什么是正确和准确的命令,请给我一个例子,如果可能的话。
发布于 2018-08-01 20:19:19
您的解决方案是否适用于sshpass,如果它不适用于您,则可能有其他错误。
Also注意:您应该始终引用每个变量。
此外,您不应该轻易禁用严格的键检查。如果您的主机密钥经常更改,您的服务器可能会受到破坏。
不过,以下是实现目标的一些方法:
使用命令分隔符(;
、&&
、||
)
sshpass -p "$password" ssh -t -oStrictHostKeyChecking=no "$username@ipaddress" 'command_one; command_two; command_three'
使用here-doc (单引号EOF )在远程主机上展开任何变量/命令替换):
sshpass -p "$password" ssh -t -oStrictHostKeyChecking=no "$username@ipaddress" <
使用单独的文件:
file.sh
command_one
command_two
command_three
然后执行如下:
cat file.sh | sshpass -p "$password" ssh -t -oStrictHostKeyChecking=no "$username@ipaddress"
使用ssh隧道:
sshpass -p "$password" ssh -f -L 3306:localhost:3306 "$username@ipaddress" sleep 300 # This will open a tunnel to the remote host and hold it open for 5 minutes
ssh -T "$username@ipaddress" 'command_one'
ssh -T "$username@ipaddress" 'command_two'
ssh -T "$username@ipaddress" 'command_three'
发布于 2018-08-01 20:13:20
试着这样做:
$ sudo sshpass -p $password ssh -t -oStrictHostKeyChecking=no $username@$ipaddress << EOF
command_one;
command_two;
command_three;
EOF
我做了上面的事,效果很好。
https://unix.stackexchange.com/questions/459923
复制相似问题