Wie kann ich Befehle auf dem Remote-Server, an den ich mich anmelde, mit pexpect
ausführen und das Ergebnis in Form einer Zeichenfolge in eine Variable speichern ?Ausführen von Befehlen auf dem Remote-Server und Speichern des Ergebnisses in einer String-Variablen in einem Python-Skript
Ich habe eine Verbindung zum Server auf folgende Weise:
COMMAND_PROMPT = '[#$] '
TERMINAL_PROMPT = '(?i)terminal type\?'
TERMINAL_TYPE = 'vt100'
SSH_NEWKEY = '(?i)are you sure you want to continue connecting'
child = pexpect.spawn('ssh -l %s %s'%(loginuser, servername))
i = child.expect([pexpect.TIMEOUT, SSH_NEWKEY, COMMAND_PROMPT, '(?i)password'])
if i == 0: # Timeout
print('ERROR! could not login with SSH. Here is what SSH said:')
print(child.before, child.after)
print(str(child))
sys.exit (1)
if i == 1: # In this case SSH does not have the public key cached.
child.sendline ('yes')
child.expect ('(?i)password')
if i == 2:
# If a public key was setup to automatically login
pass
if i == 3:
child.sendline(password)
# Now we are either at the command prompt or
# the login process is asking for our terminal type.
i = child.expect ([COMMAND_PROMPT, TERMINAL_PROMPT])
if i == 1:
child.sendline (TERMINAL_TYPE)
child.expect (COMMAND_PROMPT)
Nehmen wir nun an möchte ich den folgenden Befehl auf dem Server auszuführen ich angemeldet und das Ergebnis in eine Zeichenfolge in meinem Python-Skript speichern selbst:
ps -ef|grep process1
Wie kann dies getan werden?
Sie wollen 'pidof process1', wenn Sie Ihre Gesundheit schätzen. – tripleee
Welcher Befehl sollte ich verwenden, wenn ich "pidof process1" ** auf dem Server ausführen möchte, auf dem ich mich in _in_ meinem Skript angemeldet habe ** und ** nicht den Server, auf dem currenty mein Skript hat **, und auch das Ergebnis als a speichern Zeichenfolge –