Telnet ve run komutları için Shell betiği
Konu
Diğer makinede otomatik olarak telnet yapabilen ve komutları çalıştırabilen ve kullanıcıdan herhangi bir etkileşim olmadan telnet oturumunu sonlandıran bir kabuk betiği hazırladım; kullanıcı sadece komut dosyasını çalıştırır veya başka bir komut dosyasından çağırır.
Ancak, Unix sisteminize EXPECT ve TCL paketlerini kurmanız gerekir.
Komut aşağıdaki talimatları içerir:
#! / usr / yerel / bin / expect -f #### / usr / local / bin / expect, beklenenin yüklendiği dizindir
log_user 0 #### bu komut, komut dosyası ile diğer makine arasındaki konuşmayı gizlemek için kullanılır
adresi ayarla [lindex $ argv 0] ### betiği $ adresine çağırırken ilk iletilen parametreyi atayın
username değerini ayarla [lindex $ argv 1] ### betiği $ username 'e çağırırken 2. pass parametresini atayın
parola ayarla [lindex $ argv 2] ### betiği $ password olarak çağırırken 3. pass parametresini atayın
spanet telnet $ {address} ### IP = $ address ile makineye telnet oturumu başlatın
### makineyle konuşmaya başla:
"giriş:" bekliyoruz
gönder - "$ {username} \ r"
"Şifre:" bekliyoruz
gönder - "$ {password} \ r"
"$" bekliyoruz
Gönder - "#! / bin / ksh \ r" ### kullanılacak kabuğu ilan edin (isteğe bağlı)
"$" bekliyoruz
send - "### ona yürütmek istediğiniz herhangi bir komutu yazın"
"$" bekliyoruz
send - "exit \ r" ### telnet oturumunu sonlandırın ve komut dosyasından çıkın
Bu betiği çalıştırmak için şunu yazdım:
$ expect_script "adres" "kullanıcı adı" "şifre" ### betiğin adı "expect_script"
Ancak bekliyoruz komut dosyasını çağırmadan önce bekliyoruz komut dosyasını çalıştırılabilir hale getirmelisiniz ve bu yazarak yapılabilir:
$ chmod + x expect_script
Çözüm
Bunu dene:
#! / usr / yerel / bin / bekle spawn telnet bekle "giriş:" gönder "\ n" bekle "Şifre:" gönder "\ n" gönder "bash \ n" gönder "cd / opt \ n" gönder "ls - ltr \ n "? (Eğer vermediyseniz \ n cevabınızı bekleyecek veya manuel olarak enter yazmanız gerekecek). etkileşim
"Expect" komutunu nasıl yürüteceğinizi bekleyin -f
Ör: bekleyin -f.
Not
Forumdaki bu ipucu için ZooZoo'ya teşekkür ederiz.