当我运行一个bsh脚本ssh进入一个远程服务器并运行像wget这样的命令它保存在源而不是目标服务器上?

时间:2013-03-17 21:02:14

标签: 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文件保存在远程服务器上?

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:3)

你的脚本做了什么:

  • 打开与指定主机的交互式连接
  • 等待连接完成(这就是你必须按Ctrl-D的原因)
  • 在本地执行一些命令

您想要的是在远程主机上创建脚本并执行它:

run.sh
#!/bin/sh
cd /home/ubuntu
wget google.com

在本地主机的脚本中:

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

答案 2 :(得分:2)

你有bash的概念非常错误。 Bash不是一种创建为您打字的宏的方法。 Bash是一种脚本语言,它将在本地计算机上执行一系列命令。这意味着它将运行连接到远程主机的ssh命令。一旦ssh脚本执行完毕,bash将执行cd然后执行wget。

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

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