Ich versuche, ein paar Befehle auf einem Amazon Linux 2016.09 c4.xlarge
über das subprocess
-Modul auszuführen.Amazon Linux-Instanz stirbt in Python-Skript mit subprocess.run
Ich kann chef
oder andere CM tools
nicht verwenden, weil ich die Befehle vor dem Ausführen des Skripts nicht kenne. Mein Skript analysiert einen XML-Bericht, der von einem CIS-Sicherheitstool ausgegeben wird.
Auf einem Fall nach folgenden Aussagen versucht, habe ich den Fehler:
executing command chown root:root /etc/cron.daily
executing command iptables -P INPUT DROP
executing command yum -y install aide
# then crashes: terminal freezez and instance is inaccessible over port 22
Bei einer anderen Studie der säumige yum Anruf
executing command chown root:root /etc/cron.daily
executing command iptables -P INPUT DROP
executing command yum -y remove xorg-x11*
Loaded plugins: priorities, update-motd, upgrade-helper
Resolving Dependencies
--> Running transaction check
---> Package xorg-x11-font-utils.x86_64 1:7.2-11.5.amzn1 will be erased
---> Package xorg-x11-fonts-Type1.noarch 0:7.2-9.1.5.amzn1 will be erased
--> Processing Dependency: xorg-x11-fonts-Type1 for package: 1:java-1.7.0-openjdk-1.7.0.131-2.6.9.0.71.amzn1.x86_64
--> Running transaction check
---> Package java-1.7.0-openjdk.x86_64 1:1.7.0.131-2.6.9.0.71.amzn1 will be erased
--> Finished Dependency Resolution
Dependencies Resolved
# then crashes: terminal freezez and instance is inaccessible over port 22
Das Skript selbst ist:
class CommandFix(object):
def _execute_command(self):
for command in self.commands:
command = command.replace('#', '')
command = command.replace('yum', 'yum -y')
print("executing command", command)
self.stdout_log.write("fixing {} : running command {}\n".format(
self.rule_id,
command))
try:
cp = subprocess.run(command,
shell=True, check=True
)
except subprocess.CalledProcessError as e:
self.stderr_log.write("error fixing {} : {}\n".format(
self.rule_id,
e))
# TO-DO: Handle error with retry or similar
# right now just return false
return False
return True
Ich denke, du hast Recht! Ich werde das jetzt versuchen und hier zurück melden –
sicher, lass es mich wissen, wenn es geklappt hat! – tom
Die Antwort starrte uns ins Gesicht! iptables! Ich blockte mich selbst aus –