UNIX ssh脚本,在远程服务器上运行命令

use*_*661 5 unix ssh shell command remote-server

我想创建一个脚本,自动登录到远程服务器并抓取服务器上的文件.该脚本已登录到服务器,但命令不在该计算机上运行.一旦我从远程服务器断开连接,命令就会在客户端计算机上运行.

!/bin/sh
ssh -o PreferredAuthentications=publickey brjones@server.com
cd ~/folder
"i would like to grab file and copy it to client machines folder"
Run Code Online (Sandbox Code Playgroud)

编辑:我不确定你是否注意到我使用ssh和keygeneration使用无密码连接到远程服务器.我很欣赏这些想法,但我希望可能使用客户端上的脚本管道命令或在远程服务器上运行命令.我意识到远程服务器无法访问客户端脚本,但我很好奇是否可以通过ssh连接管道命令.

Ric*_*dle 14

您应该使用scp("安全副本")而不是ssh("安全shell").

  • scp在幕后使用ssh.您可以使用-o选项传递您想要ssh的任何参数(例如PreferredAuthentication) (3认同)

Tie*_*men 13

此外,如果您不希望远程服务器上有可用的脚本,请尝试以下操作:

ssh thehost 'cd /tmp; ls; echo Hello world, I am `hostname`'
Run Code Online (Sandbox Code Playgroud)

并且对于无SCP复制:

ssh localhost 'cat /bin/bash' > local_bash
Run Code Online (Sandbox Code Playgroud)


Eri*_*his 5

如果您的目标只是传输文件,则应使用scp.但是要在远程主机上执行某些命令而不在该远程主机上安装特定脚本,您可以像这样简单地使用stdin:

!/bin/sh
ssh -o PreferredAuthentications=publickey brjones@server.com << EOT
cd ~/folder
echo "hello" > hello.txt
...
EOT
Run Code Online (Sandbox Code Playgroud)