subprocess.run(shell, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
时间: 2023-11-25 07:36:10 浏览: 293
`subprocess.run()` 是 Python 中一个用于执行外部命令的函数。它可以接受一个字符串形式的 shell 命令作为参数,并返回一个 `CompletedProcess` 对象,其中包含了命令执行的结果等信息。
在这个函数中,`stdout=subprocess.DEVNULL` 和 `stderr=subprocess.DEVNULL` 都是用来将标准输出和标准错误输出重定向到空设备上,从而避免在命令执行过程中在终端或日志中看到这些输出。这样做的好处是可以让命令在后台默默执行,提高程序的执行效率。
相关问题
逐条解释 import subprocess new_pass = "your_new_password" command = f'echo {new_pass} | sudo passwd --stdin root' subprocess.run(command, shell=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
这段代码使用Python的`subprocess`模块来执行命令行命令。让我们逐条解释这段代码的每一部分:
1. `import subprocess`: 导入`subprocess`模块,该模块提供了执行外部命令的功能。
2. `new_pass = "your_new_password"`: 定义一个变量`new_pass`,并将其设置为你想要使用的新密码。你可以将其替换为你希望设置的实际密码。
3. `command = f'echo {new_pass} | sudo passwd --stdin root'`: 构建一个命令字符串,其中使用了前一步定义的新密码。这个命令字符串使用`echo`命令将新密码作为输入,并通过管道符号`|`将其传递给`sudo passwd --stdin root`命令。`sudo passwd --stdin root`命令将从标准输入中读取密码,并将其应用于`root`用户。
4. `subprocess.run(command, shell=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)`: 使用`subprocess.run()`函数来执行命令行命令。这个函数接受一个命令字符串作为参数,并通过`shell=True`参数告诉系统使用shell来解释执行命令。`stdout=subprocess.DEVNULL`和`stderr=subprocess.DEVNULL`参数将命令的标准输出和标准错误输出重定向到空设备,以防止输出显示在终端上。
总体而言,这段代码的作用是使用`subprocess`模块执行命令行命令,将新密码作为输入传递给`sudo passwd --stdin root`命令,并将其应用于`root`用户。在执行过程中,输出被重定向到空设备以避免显示在终端上。
python2报错NameError: name 'characters1' is not defined ``` # encoding: utf-8 import time ### 时间 import os import random import subprocess class root_password: Ap='QAZWSXEDCRFVTGBYHNUJMIKOLP' Bp='qazwsxedcrfvtgbyhnujmikolp' Cp='!@#$%^&*' Dp='0123456789' a=time.strftime('%Y-%m-%d %H:%M',time.localtime(time.time())) characters = 'QAZWSXEDCRFVTGBYHNUJMIKLOP' Dpass = random.choice(characters) print(Dpass) characters = '!@$%^&*' #random_characters = random.choice(characters) #fpass = ''.join(random_characters) fpass = ''.join(random.choice(characters)) print(fpass) characters = Bp + Ap #passfa1 = ''.join(random.choices(characters, k=2)) passfa1 = ''.join(random.choice(characters) for _ in range(2)) print(passfa1) characters = Bp + Dp #passfa2 = ''.join(random.choices(characters, k=2)) passfa2 = ''.join(random.choice(characters) for _ in range(2)) print(passfa2) characters = Bp + Cp #passfa3 = ''.join(random.choices(characters, k=3)) passfa3 = ''.join(random.choice(characters) for _ in range(3)) print(passfa3) characters = Ap + Dp #passfa4 = ''.join(random.choices(characters, k=2)) passfa4 = ''.join(random.choice(characters) for _ in range(2)) print(passfa4) characters = Ap + Cp #passfa5 = ''.join(random.choices(characters, k=2)) passfa5 = ''.join(random.choice(characters) for _ in range(2)) print(passfa5) characters = Dp + Cp #passfa6 = ''.join(random.choices(characters, k=3)) passfa6 = ''.join(random.choice(characters) for _ in range(3)) print(passfa6) NEWPASS=Dpass+passfa3+passfa6+fpass+passfa1+passfa4+passfa5 print(NEWPASS) #command = f'echo {NEWPASS} | sudo passwd --stdin root'#python3.6 command = 'echo '+NEWPASS+' | sudo passwd --stdin root' subprocess.run(command, shell=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) #command1 = f'echo {a}--root >> /root/pass.log'#python3.6 #command2 = f'echo {NEWPASS} >> /root/pass.log'#python3.6 command1 = 'echo '+a+'--root >> /root/pass.log' command2 = 'echo '+NEWPASS+' >> /root/pass.log' subprocess.run(command1, shell=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) subprocess.run(command2, shell=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) ```
在你的代码中,出现了类似的错误。在定义 `characters1` 变量之前,你需要在代码的开头添加以下行:
```
characters1 = ''
```
这样就会定义一个空字符串 `characters1`,然后你可以在后面的代码中对它进行操作。确保将这行代码放在 `characters1` 第一次出现之前。
此外,还需要注意,你使用了 `print()` 函数来打印变量的值。在类定义中直接使用 `print()` 是不推荐的做法。如果你想在类外部打印这些变量的值,可以在类定义后添加以下代码:
```
rp = root_password()
print(rp.Dpass)
print(rp.fpass)
print(rp.passfa1)
print(rp.passfa2)
print(rp.passfa3)
print(rp.passfa4)
print(rp.passfa5)
print(rp.passfa6)
print(rp.NEWPASS)
```
这样就可以在类外部打印这些变量的值了。记得将这段代码放在类定义之后。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)