如何登录远程服务器并执行一组命令,然后完成注销并继续我的脚本?
感谢。
答案 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)
使用ssh
和bash -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上生成加密密钥。
现在,当您对远程计算机执行ssh
或scp
时,您无需提供密码。