python3远程执行linux命令
-
Python3可以使用paramiko库来实现远程执行Linux命令。
首先,需要使用pip命令安装paramiko库:
“`
pip install paramiko
“`然后,可以使用以下代码来实现远程执行Linux命令:
“`python
import paramiko# 创建SSHClient对象
ssh_client = paramiko.SSHClient()# 自动添加主机到已知主机列表(默认拒绝连接)
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 连接远程主机
ssh_client.connect(hostname=’远程主机IP’, port=22, username=’用户名’, password=’密码’)# 执行命令
stdin, stdout, stderr = ssh_client.exec_command(‘要执行的Linux命令’)# 获取命令执行结果
result = stdout.read().decode()# 输出结果
print(result)# 关闭连接
ssh_client.close()
“`在上述代码中,首先创建了一个SSHClient对象,然后设置自动添加主机到已知主机列表的策略,并使用`connect`方法连接远程主机。在连接成功后,可以使用`exec_command`方法执行需要的Linux命令,并通过`stdout.read()`方法获取命令执行结果。最后,关闭SSH连接。
需要注意的是,本方法需要确保远程主机上已经安装了SSH服务,并且允许Python脚本进行远程连接。另外,为了安全考虑,建议使用SSH密钥进行认证,而不是使用明文密码进行连接。
以上就是使用Python3远程执行Linux命令的方法。希望对你有帮助!
2年前 -
在Python3中,可以通过以下几种方法实现远程执行Linux命令:
1. 使用paramiko模块:paramiko是一个基于Python的SSHv2协议的实现,可以用于远程执行命令、上传下载文件等。可以通过以下代码实现远程执行Linux命令:
“`python
import paramiko# 远程服务器的相关信息
hostname = ‘remote_server_ip’
port = ’22’
username = ‘remote_username’
password = ‘remote_password’# 创建SSH客户端
ssh = paramiko.SSHClient()
# 添加主机到已知主机列表(默认情况下,paramiko不会接受不在已知主机列表中的主机)
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接远程服务器
ssh.connect(hostname=hostname, port=port, username=username, password=password)# 执行命令
stdin, stdout, stderr = ssh.exec_command(‘ls -l’)
# 获取命令执行结果
result = stdout.read().decode()
# 输出结果
print(result)# 关闭SSH连接
ssh.close()
“`2. 使用fabric模块:fabric是基于paramiko的高级Python库,提供了更加简洁的API,可以用于远程执行命令、上传下载文件、管理远程主机等。可以通过以下代码实现远程执行Linux命令:
“`python
from fabric import Connection# 远程服务器的相关信息
hostname = ‘remote_server_ip’
username = ‘remote_username’
password = ‘remote_password’# 创建SSH连接
conn = Connection(host=hostname, user=username, connect_kwargs={“password”: password})# 执行命令
result = conn.run(‘ls -l’, hide=True)
# 输出结果
print(result.stdout)# 关闭SSH连接
conn.close()
“`3. 使用subprocess模块:subprocess模块是Python的标准库之一,提供了创建子进程、连接子进程的输入/输出管道等功能,可以通过该模块实现远程执行Linux命令。可以通过以下代码实现远程执行Linux命令:
“`python
import subprocess# 远程服务器的相关信息
hostname = ‘remote_server_ip’
username = ‘remote_username’
password = ‘remote_password’# 连接远程服务器并执行命令
ssh_command = f”sshpass -p {password} ssh {username}@{hostname} ‘ls -l'”
result = subprocess.check_output(ssh_command, shell=True)
# 输出结果
print(result.decode())
“`4. 使用ansible模块:ansible是一个开源的配置管理和自动化工具,可以通过编写任务剧本(playbook)来实现远程执行命令、管理远程主机等。可以通过ansible模块结合Python来实现远程执行Linux命令。可以通过以下代码实现远程执行Linux命令:
“`python
import ansible.runner# 远程服务器的相关信息
host = ‘remote_server_ip’
username = ‘remote_username’
password = ‘remote_password’# 执行命令
runner = ansible.runner.Runner(
module_name=’command’,
module_args=’ls -l’,
pattern=host,
remote_user=username,
remote_pass=password
)
result = runner.run()# 输出结果
print(result[‘contacted’][host][‘stdout’])
“`5. 使用SSH协议:Python的paramiko和fabric模块都是基于SSH协议的实现,如果需要更加底层的控制,可以直接使用SSH协议来实现远程执行Linux命令。可以通过以下代码实现远程执行Linux命令:
“`python
import socket
import paramiko# 远程服务器的相关信息
hostname = ‘remote_server_ip’
port = ’22’
username = ‘remote_username’
password = ‘remote_password’# 创建SSH客户端
client = paramiko.SSHClient()
# 添加主机到已知主机列表(默认情况下,paramiko不会接受不在已知主机列表中的主机)
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())try:
# 连接远程服务器
client.connect(hostname=hostname, port=port, username=username, password=password)
# 创建SSH通道
transport = client.get_transport()
# 打开一个会话通道
session = transport.open_session()
# 设置会话的伪终端
session.get_pty()
# 执行命令
session.exec_command(‘ls -l’)
# 获取命令执行结果
result = session.makefile().read()
# 输出结果
print(result)
finally:
# 关闭SSH会话
session.close()
# 关闭SSH连接
client.close()
“`以上是几种实现远程执行Linux命令的方法,你可以根据自己的需求选择适合的方法来使用。
2年前 -
Python3提供了多种实现方式来实现远程执行Linux命令的功能。下面将介绍两种常用的方法,分别是paramiko和fabric。
方法一:使用paramiko库
Paramiko是Python的一个SSH库,可以用于在远程服务器上执行命令。首先需要安装paramiko库,可以使用pip命令进行安装。
1. 安装paramiko库:
“`
pip install paramiko
“`2. 创建SSH连接:
“`python
import paramiko# 创建SSH客户端
client = paramiko.SSHClient()# 设置自动添加主机密钥
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 连接远程服务器
client.connect(hostname=’服务器地址’, port=22, username=’用户名’, password=’密码’)
“`3. 执行命令:
“`python
# 执行命令
stdin, stdout, stderr = client.exec_command(‘要执行的命令’)# 输出命令执行结果
print(stdout.read().decode())
“`4. 关闭SSH连接:
“`python
# 关闭SSH连接
client.close()
“`方法二:使用fabric库
Fabric是一个基于paramiko的Python库,它提供了更高级的接口和封装,以便更容易地在远程服务器上执行命令。
1. 安装fabric库:
“`
pip install fabric
“`2. 导入并使用fabric库:
“`python
from fabric import Connection# 创建SSH连接
c = Connection(‘用户名@服务器地址’)# 执行命令
result = c.run(‘要执行的命令’)# 输出命令执行结果
print(result.stdout.strip())
“`Fabric提供了更多的功能,如并行执行命令、上传下载文件等,通过在代码中调用相应的函数来实现。可以参考官方文档获取更多信息。
总结:
以上是使用Python3远程执行Linux命令的两种常用方法。使用paramiko可以更灵活地控制SSH连接,而使用fabric可以以更简洁的方式执行命令,并提供了更多的功能。根据实际需求选择合适的方法来实现远程命令执行功能。
2年前