请问python怎么调用linux命令,举几个例子
时间: 2023-08-11 21:40:43 浏览: 144
Python 可以通过 `subprocess` 模块调用 Linux 命令。下面是几个例子:
1. 执行一个简单的命令,例如 `ls` 命令,可以使用 `subprocess.run()` 方法:
```python
import subprocess
result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE)
print(result.stdout.decode())
```
2. 执行一个需要输入的命令,例如 `sudo` 命令,可以使用 `subprocess.Popen()` 方法:
```python
import subprocess
sudo_password = 'mypassword'
command = 'sudo ls -l'
# 构建一个 Popen 对象来执行进程
p = subprocess.Popen(['sudo', '-S'] + command.split(),
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
universal_newlines=True)
# 向进程输入密码
sudo_prompt = p.communicate(sudo_password + '\n')[1]
# 输出进程的结果
print(sudo_prompt)
```
3. 执行一个需要交互的命令,例如 `ssh` 命令,可以使用 `pexpect` 模块:
```python
import pexpect
ssh_newkey = 'Are you sure you want to continue connecting'
ssh_password = 'mypassword'
command = 'ssh user@hostname'
prompt = '\$ '
# 连接到 ssh 服务器
child = pexpect.spawn(command)
# 匹配 ssh 密钥
i = child.expect([ssh_newkey, prompt])
if i == 0:
# 提交 ssh 密钥
child.sendline('yes')
i = child.expect([ssh_newkey, prompt])
# 输入 ssh 密码
child.sendline(ssh_password)
child.expect(prompt)
# 执行命令
child.sendline('ls -l')
child.expect(prompt)
# 输出结果
print(child.before)
```
以上代码只是提供了一些例子,具体情况需要根据实际需求进行修改。值得注意的是,在执行 Linux 命令时,需要格外小心,避免造成安全漏洞。
阅读全文