Кажется, что Realtek 8168B имеет проблемы на Debian, Сжимают. Попробуйте их:
Если у Вас есть проблемы с сетевым интерфейсом, не повышающимся с RealTek 8168, это может помочь и обеспечить понимание (т.е. realtek микропрограммная проблема): https://serverfault.com/questions/384165/after-installing-debian-squeeze-ethernet-does-not-come-up
Если у Вас есть проблемы с ядром, даже не загружающим корректный модуль = драйверы для RealTek 8168, это может обеспечить необходимое понимание (т.е. аппаратная проблема обнаружения): http://djlab.com/2010/10/fixing-rtl8111-8168b-driver-debian-ubuntu/
@ Ancess Milne работает, но Subprocess.Call ()
дает вам небольшую обратную связь.
Я предпочитаю использовать SubProcess.Check_Output ()
, чтобы вы могли проанализировать то, что было напечатано на STDOUT:
import subprocess
res = subprocess.check_output(["sudo", "apt", "update"])
for line in res.splitlines():
# process the output line by line
Check_output
бросает ошибку на выходе на нулевой основе вызываемой команды
Обратите внимание, что это не вызывает Bash
или другая оболочка, если вы не укажете аргумент оболочки
аргумент ключевого слова к функции (то же самое верно для SubProcess.Call ( )
, и вы не должны если нет необходимости, поскольку он налагает опасность безопасности), он напрямую вызывает команду.
Если вы обнаружите, что делаете много (разные) вызовы команд из Python, вы можете посмотреть PLUMBUM . С этим вы можете сделать (IMO) более читаемыми:
from plumbum.cmd import sudo, apt, echo, cut
res = sudo[apt["update"]]()
chain = echo["hello"] | cut["-c", "2-"]
chain()
Модуль [11777857] модуль предназначен для этого:
import subprocess
subprocess.call(["sudo", "apt", "update"])
Если вы хотите, чтобы скрипт завершить, если команда не удается, вы можете рассмотреть возможность использования Check_Call ( )
вместо того, чтобы разбирать код возврата себя:
subprocess.check_call(["sudo", "apt", "update"])
Можно использовать bash как программу, с параметром -c для выполнения команд:
Пример:
bashCommand = "sudo apt update"
output = subprocess.check_output(['bash','-c', bashCommand])
usar módulo de subproceso
import subprocess
command = 'sudo apt update'
subprocess.check_call(command.split())
Также вы можете использовать 'os.popen'.
Пример:
import os
command = os.popen('ls -al')
print(command.read())
print(command.close())
Выход:
total 16
drwxr-xr-x 2 root root 4096 ago 13 21:53.
drwxr-xr-x 4 root root 4096 ago 13 01:50..
-rw-r--r-- 1 root root 1278 ago 13 21:12 bot.py
-rw-r--r-- 1 root root 77 ago 13 21:53 test.py
None
Для Python 3.5 и выше вы можете использовать:
import subprocess
try:
result = subprocess.run("sudo apt update", check=True, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
except subprocess.CalledProcessError as err:
raise Exception(str(err.stderr.decode("utf-8")))
except Exception as err:
raise Exception(err)
else:
return result.stdout.decode("utf-8")