通过python连接Linux命令行代码实例

1. 安装Python包

在开始使用Python连接Linux命令行之前,我们需要安装一个Python包来实现这个功能。这个包叫作paramiko,它是一个用于SSH2的Python实现。我们可以使用以下命令来安装它:

pip install paramiko

安装完成后,我们可以开始编写Python代码来连接Linux命令行。

2. 创建SSH连接

使用paramiko包,我们可以创建一个SSH连接对象,并通过该对象执行Linux命令。我们需要导入paramikotime包,并定义一些变量来存储连接信息:

import paramiko

import time

host = '192.168.1.100' # Linux主机的IP地址

port = 22 # SSH默认端口号

username = 'username' # Linux用户名

password = 'password' # Linux密码

# 创建SSH连接

ssh_client = paramiko.SSHClient()

ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh_client.load_system_host_keys()

ssh_client.connect(hostname=host, port=port, username=username, password=password)

这段代码首先导入paramikotime包,并定义了要连接的Linux主机的信息。接下来,我们创建了一个SSH连接对象ssh_client,并设置了一些连接的配置。然后,使用connect()方法连接到Linux主机。

3. 执行Linux命令

一旦成功建立SSH连接,我们就可以执行任意的Linux命令。下面是如何执行Linux命令的示例代码:

# 执行Linux命令

stdin, stdout, stderr = ssh_client.exec_command('ls')

# 读取命令执行结果

output = stdout.read().decode()

print(output)

# 关闭SSH连接

ssh_client.close()

这段代码中,我们使用exec_command()方法执行了一个Linux命令ls,并将命令的执行结果存储在stdout变量中。然后,我们使用read()方法读取执行结果,并用decode()方法将其转换为字符串格式。最后,我们打印出执行结果,并使用close()方法关闭SSH连接。

3.1 自定义命令

除了执行简单的Linux命令,我们还可以执行自定义的命令和脚本。例如,我们可以执行一个复杂的Shell脚本:

script = '''

#!/bin/bash

echo "Hello, World!"

'''

# 执行Shell脚本

stdin, stdout, stderr = ssh_client.exec_command(script)

# 读取脚本执行结果

output = stdout.read().decode()

print(output)

在这个示例中,我们定义了一个Shell脚本,然后使用exec_command()方法执行它。执行结果和之前的示例一样,可以将其打印出来。

4. 获取命令执行结果

在前面的示例中,我们使用stdout.read()方法获取了命令执行结果。然而,在大多数情况下,我们可能需要一次性获取所有命令的执行结果,而不是逐行获取。为了实现这个目的,我们可以使用invoke_shell()方法来创建一个交互式的Shell会话,并使用recv()方法来读取执行结果。

# 创建交互式Shell会话

shell = ssh_client.invoke_shell()

# 执行多个命令

commands = [

'echo "command 1"',

'echo "command 2"',

'echo "command 3"'

]

command_string = '; '.join(commands)

shell.send(command_string + '\n')

# 读取命令执行结果

output = ''

while True:

if shell.recv_ready():

output += shell.recv(1024).decode()

else:

time.sleep(0.1)

if not shell.recv_ready():

break

print(output)

在这段代码中,我们使用invoke_shell()方法创建了一个交互式的Shell会话,并将其赋值给shell变量。然后,我们定义了多个命令,并将它们连接成一个字符串command_string。接下来,我们使用send()方法将命令发送到Shell会话中,并使用recv()方法读取执行结果。由于recv()方法是阻塞的,我们需要在读取到所有结果之前等待一段时间。最后,我们打印出结果。

5. 总结

通过使用paramiko包,我们可以方便地使用Python连接Linux命令行。我们可以创建SSH连接对象,执行Linux命令,并获取命令执行结果。这为我们自动化一些管理任务提供了便利。无论是执行简单的命令还是复杂的脚本,paramiko包都可以满足我们的需求。

6. 参考文献

[1] paramiko documentation. https://docs.paramiko.org/

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签