Python

Cara Menggunakan pexpect di Python

Cara Menggunakan pexpect di Python

pexpect adalah modul Python yang popular untuk melakukan pelbagai jenis tugas automatik. Berbagai jenis aplikasi interaktif seperti telnet, ssh, ftp, dll., boleh automatik menggunakan modul ini. Ia adalah modul Python tulen, dan ia tidak memerlukan penyusun C atau TCL atau jangkaan sambungan seperti yang diharapkan modul lain. Ia boleh berfungsi dengan mudah hanya dengan menggunakan jurubahasa Python.  Modul ini boleh digunakan dalam dua cara. Salah satu cara adalah dengan menggunakan lari () fungsi, dan cara lain adalah menggunakan bertelur kelas. The lari () fungsi mudah digunakan daripada kelas bertelur dan melakukan tugas automatik dengan cepat. Perintah atau program tertentu dapat dijalankan oleh lari () fungsi yang mengembalikan output. Fungsi ini boleh digunakan sebagai alternatif untuk os.sistem () fungsi. The bertelur kelas lebih hebat daripada lari () fungsi yang dapat memunculkan program anak, berinteraksi dengannya dengan mengirim input, dan menunggu tindak balas. Modul ini dipasang di python3 secara lalai. Dua cara penggunaan modul ini telah ditunjukkan dalam tutorial ini.

Menggunakan fungsi run ()

Sintaks:

Sintaks bagi lari () fungsi diberikan di bawah.  Ia mempunyai banyak hujah untuk pelbagai tujuan. Tetapi argumen 3 atau 4 pertama digunakan. Argumen pertama fungsi ini adalah wajib yang mengambil perintah bahawa fungsi ini akan dilaksanakan. Ia dapat mengembalikan banyak output. Sekiranya dengan keadaan bebas hujah digunakan dengan Salah nilai, ia hanya akan mengembalikan output arahan.

jalankan (arahan, timeout = 30, withexitstatus = False, events = None, extra_args = None, logfile = None, cwd = None, env = None, ** kwargs)

Contoh-1: Penggunaan fungsi run () yang berbeza

Tiga kegunaan yang berbeza dari lari () fungsi telah ditunjukkan dalam skrip berikut. The 'jenteraoutput perintah dijalankan pada yang pertama lari () fungsi yang akan memaparkan jalan direktori kerja semasa. Seterusnya, lari () fungsi digunakan untuk menentukan perincian fail tertentu, dan nama fail akan diambil dari pengguna. Ketiga lari () fungsi digunakan untuk membuat ssh sambungan dan mengambil semua fail dan folder dari laman web folder.

# Import modul pexpect
import pexpect
import os
# Jalankan arahan mudah
cetak ("Direktori kerja semasa: \ n% s"% pexpect.jalankan ('pwd').menyahkod ("utf-8"))
# Dapatkan maklumat fail tertentu
nama fail = input ("Masukkan nama fail yang ada:")
# Periksa fail ada atau tidak
sekiranya os.jalan.ada (nama fail):
output = pexpect.jalankan ("ls -l" + nama fail, withexitstatus = 0)
cetak ("Maklumat fail tertentu: \ n% s"% output.menyahkod ("utf-8"))
lain:
cetak ("Fail tidak wujud.")
# Dapatkan semula fail dan folder dari direktori tertentu menggunakan perintah ssh
output = pexpect.jalankan ("ssh [email dilindungi] 'ls web /'", peristiwa = '(?i) kata laluan ':' 12345 \ n ')
cetak ("\ nKeluaran perintah ssh: \ n% s"% output.menyahkod ("utf-8"))

Pengeluaran

Output berikut akan muncul setelah melaksanakan skrip di atas. Dalam output, doc1.py telah diberikan sebagai nama fail, dan perincian fail ini telah ditunjukkan. Seterusnya, senarai semua fail laman web folder telah ditunjukkan menggunakan ssh sambungan.

Menggunakan kelas bertelur

Sintaks kelas bertelur diberikan di bawah. Pembina kelas ini dapat mengambil banyak hujah untuk banyak tujuan. Argumen pertama adalah wajib yang akan mengambil perintah untuk dilaksanakan.

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

Contoh-2: Penggunaan kelas bertelur secara sederhana

Penggunaan kelas spawn yang mudah ditunjukkan dalam skrip berikut. The 'Tarikhperintah telah dilaksanakan di sini dengan menggunakan kelas bertelur. Output perintah akan diambil dengan membuat objek kelas spawn, dan output dicetak dalam format yang dapat dibaca manusia dengan menggunakan menyahkod () kaedah.

# Import modul pexpect
import pexpect
# Jalankan arahan tarikh menggunakan spawn
anak = pexpect.bertelur ('tarikh')
# Baca output kanak-kanak tanpa menghasilkan EOF
anak.menjangkakan (pexpect.EOF)
# Simpan teks yang diharapkan dengan corak rentetan
output = anak.sebelum ini
# Cetak output
cetak ("Hari ini:", keluaran.menyahkod ("utf-8"))

Pengeluaran

Output berikut akan muncul setelah melaksanakan skrip di atas.

Contoh-3: Baca kandungan direktori menggunakan sambungan ssh

Membuat sambungan ssh dan membaca senarai semua fail dan folder dari direktori tertentu telah ditunjukkan dalam skrip berikut.  Di sini, kata laluan pengguna yang ditentukan akan diambil dari pengguna untuk membuat sambungan ssh menggunakan kelas spawn. Sekiranya kata laluan yang diberikan tidak betul, maka skrip akan dihentikan dengan menunjukkan mesej kesalahan.  Sekiranya kata laluan yang diberikan betul, tetapi terminal tidak ditentukan, maka skrip akan menunjukkan pesan kejayaan untuk penyambungan, mengirim jenis terminal, dan menentukan pola yang diharapkan prompt perintah. Sekiranya kata laluan betul dan terminal ditentukan, skrip akan menunjukkan mesej kejayaan dan arahan arahan shell.

# Import modul pexpect
import pexpect
# Tetapkan nama pengguna untuk sambungan ssh
nama pengguna = '[dilindungi e-mel]'
# Ambil kata laluan yang sah dari pengguna
Kata Laluan = masukan ("Masukkan kata laluan masuk% s:"% nama pengguna)
# Jalankan arahan ssh menggunakan spawn
anak = pexpect.bertelur ('ssh' + nama pengguna)
# Tunggu kata laluan
anak.jangkaan ('kata laluan:')
# Hantar kata laluan yang diambil dari pengguna
anak.hantaran (Kata Laluan)
# Dijangka tiga output
i = anak.jangkaan (['Kebenaran ditolak', 'Jenis terminal', '[# \ $]'])
# saya akan 0 jika ssh tidak dapat berhubung
jika saya == 0:
cetak ("Kebenaran ditolak oleh tuan rumah. Tidak dapat log masuk ")
anak.bunuh (0)
# i akan menjadi 1 jika ssh dapat menyambung tetapi terminal tidak ditetapkan
elif i == 1:
cetak ('Berhubungan dengan jayanya.\ nTerminal tidak ditetapkan.')
anak.hantaran ('vt100')
anak.jangkaan ('[# \ $]')
# i akan menjadi 2 jika ssh dapat menyambung dan terminal ditetapkan
elif i == 2:
cetak ('Berhubungan dengan jayanya.')
cepat = anak.selepas
cetak ('Shell Command Prompt:', prompt.menyahkod ("utf-8"))

Pengeluaran

Output berikut akan muncul apabila skrip di atas dijalankan dengan kata laluan yang salah.

Output berikut akan muncul apabila skrip di atas dijalankan dengan kata laluan yang betul.

Kesimpulannya

pexpect adalah modul yang sangat berguna untuk pengguna Python yang membantu mereka melakukan tugas biasa secara automatik. Kegunaan asas modul pexpect Python telah dijelaskan dalam tutorial ini dengan menggunakan contoh mudah untuk membantu pengguna mula bekerja dengan modul ini.

Shadow of the Tomb Raider untuk Tutorial Linux
Shadow of the Tomb Raider adalah penambahan kedua belas untuk siri Tomb Raider - francais permainan aksi-pengembaraan yang dibuat oleh Eidos Montreal....
Cara Meningkatkan FPS di Linux?
FPS bermaksud Bingkai sesaat. Tugas FPS adalah mengukur kadar bingkai dalam pemutaran video atau persembahan permainan. Dengan kata mudah bilangan gam...
Permainan Makmal Apl Oculus Teratas
Sekiranya anda adalah pemilik alat dengar Oculus, maka anda mesti mengetahui tentang memuatkan sideload. Sideloading adalah proses memasang kandungan ...