首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在远程计算机上执行部分shell脚本

在远程计算机上执行部分shell脚本
EN

Stack Overflow用户
提问于 2013-10-09 15:10:23
回答 4查看 1.2K关注 0票数 0

我通过shell脚本登录到远程机器(通过在脚本中放置ssh命令)。在ssh命令之后,脚本的其余行将在当前计算机上执行,而不是在远程计算机上执行。如何让其余的shell脚本行在远程机器上执行?

假设这是我的脚本

代码语言:javascript
复制
ssh username@ip-address 
ls
whoami
----

ssh之后的其余行应该在远程机器上执行,而不是在当前机器上执行。如何做到这一点?

EN

回答 4

Stack Overflow用户

发布于 2013-10-09 15:17:25

一种可能的解决方案是使用heredoc,如下例所示:

代码语言:javascript
复制
$ ssh example.foo.com -- <<@@
> ls /etc/
> cat /etc/passwd
> @@

基本上,第一行和最后一行中的@@之间的所有内容都将在远程机器上执行。

您还可以通过将文件内容读取到变量中来使用文件内容:

代码语言:javascript
复制
$ MYVAR=`cat ~/foo.txt`
$ ssh example.foo.com -- <<@@
> $MYVAR
> @@

或者只需在heredoc文档中执行相同的操作:

代码语言:javascript
复制
$ ssh example.foo.com -- <<@@
> `cat ~/foo.txt`
> @@
票数 2
EN

Stack Overflow用户

发布于 2013-10-09 15:20:04

你的登录是无密码的。

如果是,则只需使用管道在远程计算机上执行该语句

像这样:

代码语言:javascript
复制
cat myshellscript.sh | ssh blah@blah.com -q
票数 1
EN

Stack Overflow用户

发布于 2013-10-09 15:17:09

使用带有-t选项的ssh命令。例如:

代码语言:javascript
复制
ssh -t myremotehost 'uptime'
name@myremotehost's password: 
10:14:14 up 91 days, 21:20,  5 users,  load average: 0.20, 0.35, 0.36
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19265375

复制
相关文章

相似问题

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