bash,python /path/to/your_script.py,
`,,将
/path/to/your_script.py`替换为你的Python脚本的实际路径。远程服务器运行命令
1. SSH命令格式
SSH(Secure Shell)是一种加密的网络协议,用于在不安全的网络中安全地远程登录到其他计算机,SSH命令的基本格式如下:
ssh [options] [user@]host [command]
[options]
:可选的参数,用于配置连接方式、端口号等。
[user@]host
:目标主机的用户名和地址,可以是域名或IP地址,如果省略用户名,则使用当前本地主机的用户名。
[command]
:要在远程主机上执行的命令。
2. 主要参数说明
参数 | 说明 |
-l | 指定登入用户 |
-p | 设置端口号 |
-f | 后台运行,并推荐加上 -n 参数 |
-n | 将标准输入重定向到 /dev/null,防止读取标准输入,如果在后台运行ssh的话(-f选项),就需要这个选项 |
-N | 不执行远程命令,只做端口转发 |
-q | 安静模式,忽略一切对话和错误提示 |
-T | 禁用伪终端配置 |
-t | 为远程系统上的ssh进程分配一个伪tty(终端),如果没有使用这个选项,当你在远程系统上运行某条命令的时候,ssh不会为该进程分配tty(终端) |
-v | verbose)显示与连接和传送有关的调试信息,如果命令运行不太正常的话,这个选项就会非常有用 |
3. SSH控制远程主机,远程执行命令步骤
第一步,设置ssh免认证
免认证即不用密码认证就可以直接登录,这在写脚本服务器控制时特别有用,可以通过公私钥认证或者expect自动输入密码来实现。
第二步,到远端服务器上去执行命令
准备工作包括配置好SSH密钥登录,确保能够无密码登录到远程服务器,如果cmd是脚本,注意绝对路径问题,相对路径在远程执行时可能会出错。
4. 基于公私钥认证远程登录可能存在的不足
远程服务器禁止root用户登录:通常为了安全起见,很多服务器都禁止了root用户的远程登录。
远程服务器脚本里转换身份用expect需要send密码:这种方法不够安全,因为密码会暴露在脚本中。
5. SSH执行远程命令格式
ssh [options] [user@]host [command]
如果没有提供command参数,ssh就会让你登录到host上去,远程系统显示一个shell提示符,然后就能够在host上运行命令,命令exit将会关闭与host的连接,并返回到本地系统的提示符。
6. 打开远程shell
如果没有提供command参数,ssh就会让你登录到host上去,远程系统显示一个shell提示符,然后就能够在host上运行命令,命令exit将会关闭与host的连接,并返回到本地系统的提示符。
7. SSH的-t参数
-t(tty)为远程系统上的ssh进程分配一个伪tty(终端),如果没有使用这个选项,当你在远程系统上运行某条命令的时候,ssh不会为该进程分配tty(终端),相反,ssh将会把远端进程的标准输入和标准输出附加到ssh会话上去。
8. 常见问题与解答
Q1: 如何在本地shell脚本中使用SSH远程执行命令?
A1: 在本地shell脚本中可以使用以下命令通过SSH远程执行命令:
#!/bin/bash ssh user@remoteNode "cd /home ; ls"
注意双引号是必须的,否则第二个命令会在本地执行。
Q2: 如何在远程服务器上连续执行多条命令?
A2: 如果需要在远程服务器上连续执行多条命令,可以用单引号或者双引号将这些命令括起来:
ssh user@remoteNode "cd /home ; ls"
或者使用Here document的方式:
ssh user@remoteNode << eeooff cd /home ls eeooff
这种方式可以方便地执行多条命令而不需要为每条命令单独进行SSH连接。
小伙伴们,上文介绍了“远程服务器运行命令”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。