Pitone

Come usare la prospettiva in Python

Come usare la prospettiva in Python

aspettativa è un popolare modulo Python per eseguire diversi tipi di attività automatizzate. Diversi tipi di applicazioni interattive come telnet, ssh, ftp, ecc., può essere automatizzato utilizzando questo modulo. È un modulo Python puro e non richiede un compilatore C o TCL o estensioni Expect come altri si aspettano moduli. Può funzionare facilmente utilizzando solo un interprete Python.  Questo modulo può essere utilizzato in due modi. Un modo è usare il correre() funzione, e un altro modo è usare produrre classe. Il correre() la funzione è facile da usare rispetto alla classe spawn ed esegue rapidamente le attività automatizzate. Il comando particolare o un programma può essere eseguito dal correre() funzione che restituisce l'output. Questa funzione può essere utilizzata in alternativa al os.sistema() funzione. Il produrre la classe è più potente della correre() funzione che può generare un programma figlio, interagire con esso inviando input e aspettando la risposta. Questo modulo è installato in python3 per impostazione predefinita. I due modi di usare questo modulo sono mostrati in questo tutorial.

Uso della funzione run()

Sintassi:

La sintassi di correre() la funzione è riportata di seguito.  Ha molti argomenti per vari scopi. Ma i primi 3 o 4 argomenti sono usati principalmente. Il primo argomento di questa funzione è obbligatorio che accetta il comando che questa funzione eseguirà. Può restituire più output. Se la conexitstatus l'argomento è usato con il falso value, restituirà solo l'output del comando.

run(comando, timeout=30, withexitstatus=False, events=Nessuno, extra_args=Nessuno, logfile=Nessuno, cwd=Nessuno, env=Nessuno, **kwargs)

Esempio 1: diversi usi della funzione run()

Tre diversi usi del correre() funzione hanno mostrato nel seguente script. Il 'pwd' l'output del comando viene eseguito nel primo correre() funzione che visualizzerà il percorso della directory di lavoro corrente. Successivamente, il correre() viene utilizzata per determinare i dettagli di un particolare file e il nome del file sarà preso dall'utente. Il terzo correre() la funzione viene utilizzata per rendere ssh connessione e recuperare tutti i file e le cartelle dal ragnatela cartella.

# Importa modulo aspettativa
aspettativa di importazione
importare il sistema operativo
# Esegui un semplice comando
print("La directory di lavoro attuale: \n%s" %peexpect.run('pwd').decodifica("utf-8"))
# Recupera le informazioni di un particolare file
nomefile = input("Inserisci un nome file esistente: ")
# Verifica che il file esista o meno
se os.sentiero.esiste (nome file):
uscita = aspettativa.run("ls -l "+nomefile, withexitstatus=0)
print("Informazioni di un particolare file: \n%s" %output.decodifica("utf-8"))
altro:
print("Il file non esiste.")
# Recupera i file e la cartella di una particolare directory usando il comando ssh
uscita = aspettativa.run("ssh [email protected] 'ls web/'", events='(?i)password':'12345\n')
print("\nL'output del comando ssh: \n%s" %output.decodifica("utf-8"))

Produzione

Il seguente output apparirà dopo aver eseguito lo script sopra. In uscita, doc1.pi ha fornito come nome del file e sono stati mostrati i dettagli di questo file. Successivamente, l'elenco di tutti i file del ragnatela la cartella ha mostrato usando ssh connessione.

Usare la classe di spawn

La sintassi della classe spawn è riportata di seguito. Il costruttore di questa classe può accettare molti argomenti per molti scopi. Il primo argomento è obbligatorio che prenderà il comando per l'esecuzione.

class spawn  __init __ (self, command, args=[], timeout=30, maxread=2000, search window size=none, logfile=none, cwd=none, env=none)

Esempio 2: utilizzo semplice della classe spawn

Il semplice uso della classe spawn è mostrato nel seguente script. Il 'Data' il comando è stato eseguito qui usando la classe spawn. L'output del comando verrà recuperato creando l'oggetto della classe spawn e l'output viene stampato in un formato leggibile dall'uomo utilizzando il decodificare() metodo.

# Importa modulo aspettativa
aspettativa di importazione
# Esegui il comando date usando spawn
bambino = aspettativa.spawn('data')
# Legge l'output figlio senza generare EOF
bambino.aspettarsi (aspettarsi).EOF)
# Memorizza il testo previsto dallo schema di stringa
uscita = bambino.prima
# Stampa l'output
print("Oggi è:", output.decodifica("utf-8"))

Produzione

Il seguente output apparirà dopo aver eseguito lo script sopra.

Esempio 3: leggere il contenuto della directory utilizzando la connessione ssh

La creazione della connessione ssh e la lettura dell'elenco di tutti i file e le cartelle di una particolare directory sono mostrati nel seguente script.  Qui, la password dell'utente definito verrà presa dall'utente per effettuare la connessione ssh usando la classe spawn. Se la password fornita non è corretta, lo script verrà terminato mostrando un messaggio di errore.  Se la password fornita è corretta, ma il terminale non è definito, lo script mostrerà il messaggio di successo per la connessione, invierà il tipo di terminale e definirà il modello previsto del prompt dei comandi. Se la password è corretta e il terminale è definito, lo script mostrerà il messaggio di successo e il prompt dei comandi della shell.

# Importa modulo aspettativa
aspettativa di importazione
# Imposta il nome utente per la connessione ssh
nome utente = '[email protetta]'
# Prendi una password valida dall'utente
Password = input("Inserisci la password di accesso di %s: " %username)
# Esegui il comando ssh usando spawn
bambino = aspettativa.spawn('ssh ' + nome utente)
# Attendi la password
bambino.aspettarsi('password:')
# Invia la password presa dall'utente
bambino.linea di invio (password)
# Previsto tre output
io = bambino.aspettarsi (['Autorizzazione negata', 'Tipo di terminale', '[#\$] '])
# sarò 0 se ssh non è in grado di connettersi
se io == 0:
print("Permesso negato dall'host. Impossibile fare il log in")
bambino.uccidere(0)
# sarò 1 se ssh è in grado di connettersi ma il terminale non è impostato
elif io == 1:
print('Connesso con successo.\nIl tipo di terminale non è impostato.')
bambino.sendline('vt100')
bambino.aspettarsi('[#\$]')
# sarò 2 se ssh è in grado di connettersi e il terminale è impostato
elif io == 2:
print('Connesso con successo.')
prompt = bambino.dopo
print('Shell Command Prompt:', prompt.decodifica("utf-8"))

Produzione

Il seguente output apparirà quando lo script sopra viene eseguito con la password sbagliata.

Il seguente output apparirà quando lo script sopra viene eseguito con la password corretta.

Conclusione

pexpect è un modulo molto utile per gli utenti Python che li aiuta a svolgere automaticamente le loro normali attività. Gli usi di base del modulo peexpect di Python sono stati descritti in questo tutorial usando semplici esempi per aiutare gli utenti a iniziare a lavorare con questo modulo.

Installa l'ultimo Dolphin Emulator per Gamecube e Wii su Linux
L'emulatore Dolphin ti consente di giocare ai giochi Gamecube e Wii scelti su Personal Computer Linux (PC). Essendo un emulatore di giochi liberament...
Come utilizzare GameConqueror Cheat Engine in Linux
L'articolo copre una guida sull'utilizzo del motore cheat GameConqueror in Linux. Molti utenti che giocano su Windows utilizzano spesso l'applicazione...
I migliori emulatori di console di gioco per Linux
Questo articolo elencherà il popolare software di emulazione della console di gioco disponibile per Linux. L'emulazione è un livello di compatibilità ...