Saya telah mencoba menulis naskah untuk menyederhanakan serangkaian pekerjaan saya. Saya mencobanya dengan perintah shell tetapi kodenya terlihat terlalu sederhana dan sejujurnya terlalu amatir. Saya mencoba mempelajari python untuk skrip dan dengan bantuan Anda, saya berharap masalah saya ini dapat berubah menjadi praktik yang menjelaskan.
Berikut ini adalah kode shell yang saya tulis:
#!/usr/bin/expect
spawn telnet IPaddress
sleep 0.1
expect "Enter username and password"
send "username password \n"
sleep 0.1
send "debug; \n"
sleep 0.1
send "def t1 suspend_loader \n"
expect "enter subcommands"
send "traceback \n \n;"
sleep 1
send "act t1 \n"
sleep 0.1
send "quit \n"
sleep 0.1
send "stor2tst;audit_modules \n"
expect "PS Checksum audit completed"
send "quit \n"
sleep 0.1
send "debug"
sleep 0.1
send "print t1 \n"
sleep 0.5
send "quit \n"
sleep 0.1
send "logutil;open MOD;back all;quit \n"
sleep 0.1
send "debug \n"
sleep 0.1
send "di modules:pr.514 d 1 (&0) char n=68 \n"
send "quit \n"
sleep 1
send "quit \n"
send "logout \n"
interact
Seperti yang mungkin sudah Anda duga, kode ini dirancang untuk antarmuka switch tertentu. Prompt nama pengguna dan kata sandi muncul dalam satu baris. Ada level shell tertentu (seperti level debug) yang saya perlukan untuk menjalankan beberapa perintah. Saya juga menggunakan modul ekspektasi di sini, tetapi menurut saya modul ini berjalan begitu saja tanpa memeriksa string di bagian ekspektasi..
APA YANG SAYA COBA LAKUKAN?
Saya perlu melakukan telnet ke daftar Alamat IP yang diketahui (20 server).
Semua server memiliki nama pengguna dan sandi yang sama.
Saya perlu untuk menjalankan serangkaian perintah ini di setiap server dan mengembalikan output apa pun yang ada untuk memisahkan file log di bawah direktori tertentu (misalnya /tmp/dir).
Selain itu, beberapa perintah memerlukan "enter ganda" agar dapat dijalankan! Itu sebabnya saya menggunakan \n \n setelah perintah traceback.
Bantuan apa pun sangat kami hargai.
Terima kasih sebelumnya,
expect
dan belajar menyukai bahasa TCL, yang seperti Python, adalah bahasa skrip dinamis yang mampu melakukan semua yang Anda perlukan (termasuk loop, pemrosesan argumen baris perintah, dll). - person larsks   schedule 26.08.2015telnetlib
adalah jalan yang harus ditempuh. stackoverflow.com/questions/10952514/telnetlib-python-example - person Joseph Farah   schedule 26.08.2015