欢迎访问宙启技术站
智能推送

如何使用Python中的run()函数实现远程服务器命令执行

发布时间:2024-01-02 11:34:33

在Python中,可以使用subprocess模块中的run()函数来执行远程服务器上的命令。run()函数可以方便地执行命令并等待其完成。下面是使用run()函数实现远程服务器命令执行的步骤和示例:

步骤1:导入subprocess模块。

import subprocess

步骤2:定义远程服务器的连接信息。

server_ip = "192.168.0.100"
ssh_port = "22"
username = "user"
password = "password"

步骤3:构建远程命令。

command = "ls -l"

步骤4:使用subprocess.run()函数执行远程命令。

subprocess.run(["sshpass", "-p", password, "ssh", "-p", ssh_port, username+"@"+server_ip, command], check=True)

在这个示例中,我们使用了subprocess.run()函数来执行远程服务器上的ls -l命令。这个函数的参数是一个命令的列表,其中 个元素是要执行的命令,后面的元素是命令的参数。在远程服务器上执行命令需要通过ssh登录,所以我们使用了sshpassssh命令,并传递了远程服务器的连接信息。check=True参数是为了在命令执行失败时抛出异常。

你可以根据实际情况修改远程服务器的连接信息和要执行的命令。例如,也可以执行其他常用的系统命令如pingcd等。

需要注意的是,这种方式需要在本地机器上安装sshpass命令行工具,可以通过sudo apt-get install sshpass命令进行安装。

另外,还可以使用paramiko模块来实现远程服务器命令执行,该模块提供了更多的灵活性和功能。以下是使用paramiko模块的示例:

import paramiko

server_ip = "192.168.0.100"
ssh_port = "22"
username = "user"
password = "password"

# 创建SSH客户端
ssh_client = paramiko.SSHClient()
# 允许连接不在known_hosts文件中的主机
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接远程服务器
ssh_client.connect(hostname=server_ip, port=ssh_port, username=username, password=password)

# 执行远程命令
stdin, stdout, stderr = ssh_client.exec_command("ls -l")
# 获取命令输出结果
output = stdout.read().decode("utf-8")

# 关闭连接
ssh_client.close()

使用paramiko模块需要安装,可以使用pip install paramiko命令进行安装。

以上是使用run()函数和paramiko模块实现远程服务器命令执行的方法和示例。根据实际需求选择适合的方式,即可实现命令的远程执行。