linux 远程运行sh,如何使用SSH在远程机器上运行shell脚本?

我必须在远程机器上运行一个shell脚本(windows / Linux)。

我在机器A和B上都配置了SSH。我的脚本在机器A上,它将在远程机器B上运行我的一些代码。

本地和远程计算机可以是基于Windows或Unix的系统。

有没有办法使用plink / ssh来执行此操作?

如果机器A是Windows机器,则可以使用Plink(PuTTY的一部分)和-m参数,它将在远程服务器上执行本地脚本。plink root@MachineB -m local_script.sh

如果机器A是基于Unix的系统,则可以使用:ssh root@MachineB 'bash -s' < local_script.sh

您不应该将脚本复制到远程服务器才能运行它。

这是一个古老的问题,杰森的答案正常,但我想补充一点:ssh user@host <

#commands to run on remote host

ENDSSH

这也可以用于需要用户输入的su和命令。 (注意'逃脱的heredoc)

编辑:由于这个答案不断获得流量,我会添加更多信息heredoc的这个奇妙的用途:

你可以用这个语法嵌套命令,这就是嵌套的唯一方法似乎可行(以一种理智的方式)ssh user@host <

#commands to run on remote host

ssh user@host2 <

# Another bunch of commands on another host

wall <

Error: Out of cheese

ENDWALL

ftp ftp.secureftp-test.com <

test

test

ls

ENDFTP

END2

ENDSSH

实际上你可以与telnet,f​​tp等一些服务进行对话。但是请记住,heredoc只是将stdin作为文本发送,它不会等待行之间的响应

编辑:我刚刚发现,如果您使用<

#commands to run on remote host

ssh user@host2 <

# Another bunch of commands on another host

wall <

Error: Out of cheese

ENDWALL

ftp ftp.secureftp-test.com <

test

test

ls

ENDFTP

END2

ENDSSH

(我认为这应该工作)

另见http://tldp.org/LDP/abs/html/here-docs.html

另外,如果您想从目标主机中选择它们,请不要忘记转义变量。

这在过去让我感觉到了。

例如:user@host> ssh user2@host2 "echo $HOME"

打印出/ home / user2

而user@host> ssh user2@host2 "echo $HOME"

打印出/ home / user

另一个例子:user@host> ssh user2@host2 "echo hello world | awk '{print $1}'"

正确打印出“你好”。

链接地址: http://www.djcxy.com/p/2887.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值