如何使用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登录,所以我们使用了sshpass和ssh命令,并传递了远程服务器的连接信息。check=True参数是为了在命令执行失败时抛出异常。
你可以根据实际情况修改远程服务器的连接信息和要执行的命令。例如,也可以执行其他常用的系统命令如ping、cd等。
需要注意的是,这种方式需要在本地机器上安装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模块实现远程服务器命令执行的方法和示例。根据实际需求选择适合的方式,即可实现命令的远程执行。
