首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >sshpass中的多个命令

sshpass中的多个命令
EN

Unix & Linux用户
提问于 2018-08-01 19:40:31
回答 2查看 24.8K关注 0票数 6

是否有一种在sshpass中使用多个命令的方法,我尝试使用不同的组合,但它会引发错误。

代码语言:javascript
运行
复制
$ sudo sshpass -p $password ssh -t -oStrictHostKeyChecking=no $username@$ipaddress << EOF
  command_one
  command_two
  command_three
EOF

什么是正确和准确的命令,请给我一个例子,如果可能的话。

EN

回答 2

Unix & Linux用户

发布于 2018-08-01 20:19:19

您的解决方案是否适用于sshpass,如果它不适用于您,则可能有其他错误。

Also注意:您应该始终引用每个变量。

此外,您不应该轻易禁用严格的键检查。如果您的主机密钥经常更改,您的服务器可能会受到破坏。

不过,以下是实现目标的一些方法:

使用命令分隔符(;&&||)

代码语言:javascript
运行
复制
sshpass -p "$password" ssh -t -oStrictHostKeyChecking=no "$username@ipaddress" 'command_one; command_two; command_three'

使用here-doc (单引号EOF )在远程主机上展开任何变量/命令替换):

代码语言:javascript
运行
复制
sshpass -p "$password" ssh -t -oStrictHostKeyChecking=no "$username@ipaddress" <

使用单独的文件:

file.sh

代码语言:javascript
运行
复制
command_one
command_two
command_three

然后执行如下:

代码语言:javascript
运行
复制
cat file.sh | sshpass -p "$password" ssh -t -oStrictHostKeyChecking=no "$username@ipaddress"

使用ssh隧道:

代码语言:javascript
运行
复制
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'
票数 6
EN

Unix & Linux用户

发布于 2018-08-01 20:13:20

试着这样做:

代码语言:javascript
运行
复制
$ sudo sshpass -p $password ssh -t -oStrictHostKeyChecking=no $username@$ipaddress << EOF
command_one;
command_two;
command_three;
EOF

我做了上面的事,效果很好。

票数 5
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/459923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档