通过脚本登录到远程服务器并执行一组命令

时间:2011-06-04 20:45:25

标签: bash command-line ssh

如何登录远程服务器并执行一组命令,然后完成注销并继续我的脚本?

感谢。

3 个答案:

答案 0 :(得分:11)

ssh可用于执行命令,而不是启动远程交互式登录shell。例如:

ssh user@host ls

将登录主机并执行ls命令。

您可以照常在bash脚本中使用它:

#!/bin/bash

# do local commands

ssh user@host "ls; grep something file.txt; copy a b"

# do more local commands

从ssh的手册页,退出状态将是remove命令的退出状态,如果发生错误则退出255.

答案 1 :(得分:1)

使用sshbash -s简化代码格式的小变化:

echo '
globchar="*"
ls -1d $globchar
ls -ld $globchar
' |
ssh user@host "bash -s --"

答案 2 :(得分:1)

正如其他人所说,您可以使用ssh。但是,如果您正在运行脚本,则可能需要设置ssh以在没有密码的情况下登录。您可以通过ssh-keygen命令设置公钥/私钥来实现。同时将密钥文件(id_rsa,id_rsa.pub)的权限更改为公钥600(私钥)和私钥400(修改安全性)的权限。 chmod 600 id_rsa.pub; chmod 400 id_rsa

在您的系统上,运行ssh-keygen以生成公钥和私钥。在Unix / Linux / Mac上,它们位于$HOME/.ssh目录中。 (将密码保留为空白!)。然后,您希望在authorized_keys目录下的远程计算机上创建一个名为$HOME/.ssh的文件,并在那里复制您的公钥。无需在远程m / c上生成加密密钥。

现在,当您对远程计算机执行sshscp时,您无需提供密码。