Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 当我运行一个包含ssh';,然后运行类似wget的命令,它保存在源服务器而不是目标服务器上?_Linux_Bash_Ssh - Fatal编程技术网

Linux 当我运行一个包含ssh';,然后运行类似wget的命令,它保存在源服务器而不是目标服务器上?

Linux 当我运行一个包含ssh';,然后运行类似wget的命令,它保存在源服务器而不是目标服务器上?,linux,bash,ssh,Linux,Bash,Ssh,我有以下bash脚本 #!/bin/bash ssh -o "StrictHostKeyChecking no" ubuntu@$1 cd /home/ubuntu wget google.com 当我运行它时,/test.sh我通过ssh连接到远程服务器,但是wget命令不会运行,除非我按下ctrl+d,然后ssh会话退出,index.html文件保存到/home/ubuntu 如何更改此bash脚本,以便在远程服务器上保存index.html文件?脚本的作用: 打开到指定主机的交互式连接

我有以下bash脚本

#!/bin/bash
ssh -o "StrictHostKeyChecking no" ubuntu@$1
cd /home/ubuntu
wget google.com
当我运行它时,
/test.sh
我通过ssh连接到远程服务器,但是
wget
命令不会运行,除非我按下ctrl+d,然后ssh会话退出,
index.html
文件保存到
/home/ubuntu

如何更改此bash脚本,以便在远程服务器上保存
index.html
文件?

脚本的作用:

  • 打开到指定主机的交互式连接
  • 等待连接完成(这就是为什么必须按Ctrl-D键)
  • 在本地执行一些命令
您需要的是在远程主机上生成脚本并执行它:

run.sh
#!/bin/sh
cd /home/ubuntu
wget google.com
在本地主机上的脚本中:

ssh -o "StrictHostKeyChecking no" ubuntu@$1 run.sh
脚本的作用:

  • 打开到指定主机的交互式连接
  • 等待连接完成(这就是为什么必须按Ctrl-D键)
  • 在本地执行一些命令
您需要的是在远程主机上生成脚本并执行它:

run.sh
#!/bin/sh
cd /home/ubuntu
wget google.com
在本地主机上的脚本中:

ssh -o "StrictHostKeyChecking no" ubuntu@$1 run.sh

只需在
ssh
的命令行中指定要执行的命令:

ssh -o "StrictHostKeyChecking no" ubuntu@$1 'cd /home/ubuntu; wget google.com'

只需在
ssh
的命令行中指定要执行的命令:

ssh -o "StrictHostKeyChecking no" ubuntu@$1 'cd /home/ubuntu; wget google.com'

您对bash的概念有很大的误解。Bash不是一种创建宏来为您键入内容的方法。Bash是一种脚本语言,它将在本地计算机上执行一系列命令。这意味着它将运行一个连接到远程主机的ssh命令。一旦ssh脚本执行完毕,bash将执行cd,然后执行wget

您要做的是将命令传递给远程ssh服务器

 #!/bin/bash
 ssh -o "StrictHostKeyChecking no" ubuntu@$1 "cd /home/ubuntu; wget google.com"

您对bash的概念有很大的误解。Bash不是一种创建宏来为您键入内容的方法。Bash是一种脚本语言,它将在本地计算机上执行一系列命令。这意味着它将运行一个连接到远程主机的ssh命令。一旦ssh脚本执行完毕,bash将执行cd,然后执行wget

您要做的是将命令传递给远程ssh服务器

 #!/bin/bash
 ssh -o "StrictHostKeyChecking no" ubuntu@$1 "cd /home/ubuntu; wget google.com"

我也喜欢你简洁的方式,如果你只需要运行两个命令,编写一个脚本可能会有点过分。@cnicutar这正是我要对你的答案发表评论的地方,但最后我拒绝了;-)我也喜欢你简洁的方式,如果你只需要运行两个命令,编写一个脚本可能会有点过分。@cnicutar这正是我要对你的答案发表评论的地方,但最后我拒绝了;-)