1

我有以下 bash 脚本

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

当我运行它时,./test.sh我会通过 ssh 进入远程服务器,但除非我按ctrl+d然后退出 ssh 会话并将文件保存到,否则该wget命令不会运行index.html/home/ubuntu

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

4

3 回答 3

4

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

ssh -o "StrictHostKeyChecking no" ubuntu@$1 'cd /home/ubuntu; wget google.com'
于 2013-03-17T21:05:32.760 回答
3

你的脚本做什么:

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

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

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

在本地主机上的脚本中:

ssh -o "StrictHostKeyChecking no" ubuntu@$1 run.sh
于 2013-03-17T21:04:41.687 回答
2

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

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

 #!/bin/bash
 ssh -o "StrictHostKeyChecking no" ubuntu@$1 "cd /home/ubuntu; wget google.com"
于 2013-03-17T21:10:49.143 回答