subprocess.run 执行 su root , cd /remote/msg/cad/sos_library/virtuoso_lib, ls -l *.virtuosolib 三条命令,三天命令要合成一个集合执行
时间: 2023-12-30 16:04:48 浏览: 80
您可以使用以下代码将三条命令合成一个集合,并使用subprocess.run()执行它们:
```
import subprocess
cmd = "su root && cd /remote/msg/cad/sos_library/virtuoso_lib && ls -l *.virtuosolib"
subprocess.run(cmd, shell=True, check=True)
```
请注意,此代码需要运行在拥有root权限的系统上,否则命令可能无法成功执行。另外,由于此代码使用了shell=True参数,因此可以执行shell命令,但也将带来潜在的安全风险,请谨慎使用。
相关问题
Python 使用subprocess.run 执行 su root , cd /remote/msg/cad/sos_library/virtuoso_lib, ls -l *.virtuosolib 三条命令的代码
代码应该如下:
```
import subprocess
cmd1 = ['su', 'root']
cmd2 = ['cd', '/remote/msg/cad/sos_library/virtuoso_lib']
cmd3 = ['ls', '-l', '*.virtuosolib']
subprocess.run(cmd1, check=True)
subprocess.run(cmd2, shell=True, check=True)
subprocess.run(cmd3, shell=True, check=True)
```
需要注意的是,第一条命令 su root 需要在 root 用户下执行。在运行代码前,你需要先切换到 root 用户或者输入 root 用户的密码。同时,第二条命令 cd 需要在 shell 中执行,因此需要使用 shell=True。最后一条命令 ls -l *.virtuosolib 则需要在当前目录下执行。
cp /etc/pam.d/su /etc/pam.d/su.bak cp /etc/pam.d/password-auth-ac /etc/pam.d/password-auth-ac.bak cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak cp /etc/login.defs /etc/login.defs.bak cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak cp /etc/profile /etc/profile.bak cp /etc/motd /etc/motd.bak passwd -l adm passwd -l lp passwd -l sync passwd -l shutdown passwd -l halt passwd -l news passwd -l uucp passwd -l operator passwd -l games passwd -l listen passwd -l gdm passwd -l webservd passwd -l nobody passwd -l nobody4 passwd -l noaccess
以下是将这些命令承载业务使用Python实现的代码示例:
```python
import shutil
import subprocess
files_to_backup = [
('/etc/pam.d/su', '/etc/pam.d/su.bak'),
('/etc/pam.d/password-auth-ac', '/etc/pam.d/password-auth-ac.bak'),
('/etc/pam.d/system-auth', '/etc/pam.d/system-auth.bak'),
('/etc/login.defs', '/etc/login.defs.bak'),
('/etc/ssh/sshd_config', '/etc/ssh/sshd_config.bak'),
('/etc/vsftpd/vsftpd.conf', '/etc/vsftpd/vsftpd.conf.bak'),
('/etc/profile', '/etc/profile.bak'),
('/etc/motd', '/etc/motd.bak')
]
for source, destination in files_to_backup:
shutil.copy(source, destination)
users_to_lock = ['adm', 'lp', 'sync', 'shutdown', 'halt', 'news', 'uucp', 'operator', 'games', 'listen', 'gdm', 'webservd', 'nobody', 'nobody4', 'noaccess']
for user in users_to_lock:
subprocess.call(['passwd', '-l', user])
```
上述代码首先使用`shutil`模块中的`copy`函数将需要备份的文件复制到相应的备份文件中。将源文件和目标备份文件的路径作为元组存储在`files_to_backup`列表中,然后遍历列表,对每个文件执行备份操作。
接下来,通过遍历`users_to_lock`列表,使用`subprocess`模块中的`call`函数执行`passwd -l`命令来锁定用户。
请确保你的Python环境中已经安装了`shutil`模块,并将需要备份的文件路径和需要锁定的用户正确添加到`files_to_backup`和`users_to_lock`列表中。运行代码后,文件备份和用户锁定操作将会被执行。
阅读全文
相关推荐
















