用python运维linux命令
-
首先,要用Python运维Linux命令,需要使用Python内建的subprocess模块。这个模块允许我们在Python脚本中执行外部命令,并获取其输出结果。
开始之前,我们要先导入subprocess模块:
import subprocess
一、执行简单的Linux命令
要执行简单的Linux命令,可以使用subprocess模块的run函数。下面是一个示例:
result = subprocess.run([‘ls’, ‘-l’], capture_output=True, text=True)
上面的代码执行了ls -l命令,并将其输出结果保存在result变量中。
我们在执行命令时,将命令与参数作为列表传递给run函数。capture_output参数用于捕获命令的标准输出和错误输出。text参数用于指定输出结果为文本形式。
我们可以通过result的stdout属性获取命令的标准输出结果,通过stderr属性获取错误输出结果。
二、执行复杂的Linux命令
如果要执行复杂的Linux命令,可以使用subprocess模块的Popen函数。
下面是一个示例:
command = ‘ls -l | grep .txt’
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)上面的代码执行了ls -l | grep .txt命令,并将其输出结果保存在process变量中。
我们通过shell参数指定执行的命令为字符串形式,并通过stdout和stderr参数指定输出结果的管道。
我们可以通过process的stdout属性获取命令的标准输出结果,通过stderr属性获取错误输出结果。
三、处理命令输出结果
在执行命令后,我们可以对命令的输出结果进行进一步处理。
例如,我们可以将输出结果按行进行分割,然后进行其他操作:
output = result.stdout.split(‘\n’)
for line in output:
# 处理每一行的输出结果我们也可以将输出结果保存到文件中:
with open(‘output.txt’, ‘w’) as f:
f.write(result.stdout)四、异常处理
在执行命令过程中,有可能会出现错误。我们可以使用try-except语句来处理异常情况。
例如,如果命令执行失败,我们可以捕获异常并输出错误信息:
try:
result = subprocess.run([‘ls’, ‘-l’], capture_output=True, text=True)
except subprocess.CalledProcessError as e:
print(f’Command execution failed: {e.stderr}’)这是关于使用Python运维Linux命令的基本介绍。通过subprocess模块,我们可以方便地在Python中执行Linux命令,并处理其输出结果,从而实现自动化运维的目的。注意在使用时要谨慎处理命令参数,以防止安全问题的发生。
2年前 -
Python是一种功能强大、简单易学的编程语言,可以用于自动化运维任务,包括执行Linux命令。下面是使用Python进行Linux命令运维的五个常见示例:
1. 执行单个命令:
使用`subprocess`模块可以在Python中执行单个Linux命令。可以使用`subprocess.run()`函数来执行命令,并获取命令的输出。“`python
import subprocessresult = subprocess.run([‘ls’, ‘-l’], capture_output=True)
print(result.stdout.decode())
“`上述代码会执行`ls -l`命令,并将输出打印到控制台。
2. 执行多个命令或命令管道:
如果需要执行多个命令,或者将多个命令通过管道连接起来,可以使用`subprocess.PIPE`来处理输入和输出。“`python
import subprocessp1 = subprocess.Popen([‘cat’, ‘file.txt’], stdout=subprocess.PIPE)
p2 = subprocess.Popen([‘grep’, ‘keyword’], stdin=p1.stdout, stdout=subprocess.PIPE)
p1.stdout.close()
output = p2.communicate()[0]
print(output.decode())
“`上述代码首先使用`Popen`函数启动一个子进程来执行`cat`命令,并将输出通过管道传递给下一个子进程执行`grep`命令,最后获取`grep`命令的输出并打印。
3. 执行远程命令:
如果需要执行远程Linux服务器上的命令,可以使用Paramiko库。Paramiko提供了SSH客户端和服务器的实现,可以轻松执行远程命令。“`python
import paramikossh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=’192.168.0.1′, username=’user’, password=’password’)
stdin, stdout, stderr = ssh.exec_command(‘ls -l’)
output = stdout.read().decode()
print(output)
ssh.close()
“`上述代码使用Paramiko库连接到远程服务器,并执行`ls -l`命令,然后获取输出并打印。
4. 解析命令输出:
如果需要分析Linux命令的输出,并对结果进行处理,可以使用Python的字符串处理和正则表达式等工具。“`python
import subprocess
import reresult = subprocess.run([‘df’, ‘-h’], capture_output=True)
output = result.stdout.decode()
lines = output.split(“\n”)
for line in lines[1:]:
match = re.match(r'(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)’, line)
if match:
print(f”Filesystem: {match.group(1)}, Size: {match.group(2)}, Used: {match.group(3)}”)
“`上述代码执行`df -h`命令,解析输出的每一行,并使用正则表达式提取文件系统、大小和使用情况等信息。
5. 批量执行命令:
如果需要一次性执行多个命令,并获取每个命令的输出,可以使用Python的循环和列表等结构。“`python
import subprocesscommands = [‘ls’, ‘pwd’, ‘date’]
for command in commands:
result = subprocess.run([command], capture_output=True)
print(f”{command} output: {result.stdout.decode()}”)
“`上述代码定义了一个命令列表,然后使用循环遍历每个命令并执行,并打印每个命令的输出。
总结起来,使用Python运维Linux命令可以执行单个或多个命令,处理远程命令,解析输出以及批量执行命令。通过Python的灵活性和强大的库支持,可以轻松完成各种运维任务。
2年前 -
Python是一种功能强大的编程语言,可用于运维Linux系统。本文将介绍如何使用Python执行一些常见的Linux命令,包括文件操作、网络配置、进程管理等。
## 文件操作
### 创建文件夹
使用`os`模块中的`makedirs()`函数可以在Linux系统中创建一个新的文件夹。
“`python
import ospath = “/path/to/new/folder”
os.makedirs(path)
“`### 复制文件
使用`shutil`模块中的`copy()`函数可以复制文件。
“`python
import shutilsrc_file = “/path/to/source/file”
dst_file = “/path/to/destination/file”
shutil.copy(src_file, dst_file)
“`### 移动文件
使用`shutil`模块中的`move()`函数可以在文件系统中移动文件。
“`python
import shutilsrc_file = “/path/to/source/file”
dst_file = “/path/to/destination/file”
shutil.move(src_file, dst_file)
“`### 删除文件
使用`os`模块中的`remove()`函数可以删除文件。
“`python
import osfile = “/path/to/file”
os.remove(file)
“`### 查看文件内容
使用`open()`函数可以打开一个文件,并使用`read()`函数读取文件内容。
“`python
file = “/path/to/file”
with open(file, “r”) as f:
content = f.read()
print(content)
“`## 网络配置
### 查看网络接口信息
使用`subprocess`模块执行`ifconfig`命令可以查看Linux系统的网络接口信息。
“`python
import subprocessoutput = subprocess.check_output(“ifconfig”).decode(“utf-8”)
print(output)
“`### 修改网络接口配置
使用`subprocess`模块执行`sed`命令可以修改Linux系统的网络接口配置。
“`python
import subprocessinterface = “eth0”
ip_address = “192.168.0.100”
netmask = “255.255.255.0”
gateway = “192.168.0.1”# 修改ip地址
subprocess.call(f”sudo ifconfig {interface} {ip_address} netmask {netmask}”, shell=True)# 修改默认网关
subprocess.call(f”sudo route add default gw {gateway}”, shell=True)
“`## 进程管理
### 查看正在运行的进程
使用`subprocess`模块执行`ps`命令可以查看正在运行的进程。
“`python
import subprocessoutput = subprocess.check_output(“ps -ef”).decode(“utf-8″)
print(output)
“`### 结束进程
使用`subprocess`模块执行`kill`命令可以结束指定的进程。
“`python
import subprocessprocess_id = 12345
subprocess.call(f”kill {process_id}”, shell=True)
“`### 启动新进程
使用`subprocess`模块执行`bash`命令可以启动新的进程。
“`python
import subprocesssubprocess.call([“bash”])
“`以上是使用Python运维Linux命令的一些示例,通过使用Python与Linux系统进行交互,可以更方便地进行系统管理和自动化操作。还可以使用其他模块和库来扩展这些功能,如`paramiko`模块用于远程连接和执行命令,`pexpect`模块用于自动化交互等。通过充分利用Python的优势,可以大大提高运维效率和自动化能力。
2年前