如何高效地远程执行服务器命令?

avatar
作者
筋斗云
阅读量:0
远程服务器运行命令通常需要通过SSH(安全外壳协议)连接到服务器。在连接成功后,你可以在命令行界面输入相应的命令来执行操作。如果你想在远程服务器上运行一个Python脚本,你可以使用以下命令:,,``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连接。

小伙伴们,上文介绍了“远程服务器运行命令”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!