Verhalten von before in pexpect

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
kitebuggy
User
Beiträge: 38
Registriert: Donnerstag 5. August 2021, 21:11

Hallo

Ich bin Neuling und mit meinem Latein am Ende:

Ich logge mich in meien Raspberry Pi ein und will die Ausgabe des Befehls ls erhalten:
Folgender Code funktioniert jedoch nicht:

Code: Alles auswählen

#!/usr/bin/python3
import pexpect
import sys

print('Starting')
l=pexpect.spawn('ssh pi@192.168.10.36',encoding='utf-8')
#l.logfile=sys.stdout
l.expect('password')
l.sendline('PASS')
l.expect('pi@raspberrypi')
l.sendline('ls /home/pi')
l.expect('pi@raspberrypi')
print("Before: ",l.before)
l.close()
Es wird nicht die Ausgabe des Befehls ls dargesstellt.

Stattdessen:
debian@debian:$ ./pls.py
Starting
Before: : ~

Ich dachte, before gibt den Text zurück, der vor dem expect steht.

Wie kriege ich es hin, dass das entfernte Directory angezeigt wird? Was mache ich falsch?
Vielen Dank für eine Erklärung.
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

Anstatt den externen Befehl "ssh" aufzurufen, solltest du dir das Modul "paramiko" anschauen.
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@kitebuggy,

vielleicht ist es einfacher mit der speziellen pxssh class für ssh Kommunikation:
https://pexpect.readthedocs.io/en/stabl ... xssh-class
Antworten