Linux dağıtımlarından herhangi birine “expect” paketi kurulumundan sonra yazdığınız scriptlere input olarak sizin yazacağınız girdileri otomatik olarak scripte yazdırabilirsiniz. Bu ne demek oluyor kısaca şöyle açıklayayım.
Öncelikle “expect” paketini kurduğunuzu varsayıyorum. (packet manager ile kurmakta sıkıntı yaşamassınız) Senaryomuz şöyle olsun ; Diyelimki dosya paylaşım sitelerinden dosya indirdiniz ve yeni bir dosya indirmeden önce beklemek istemiyorsunuz. Ya kalkacaksınız modeminizi aç/kapa yapacaksınız tabi dinamik bir ip adresiniz varsa ya da modemin web arayüzünü açacaksınız modemi oradan restart edeceksiniz ya da telnet/ssh ile login olup modemi bir şekilde baştan başlatacaksınız. Bu işlemi “expect” paketi yardımıyla tek bir script ile yapabilirsiniz.
Aşağıda telnet ile Airties bir modeme baglanarak modemi restart eden scripti ekliyorum. Bu scripti ihtiyaçlarınıza göre değiştirip komut satırından kullanıcı girdileri ile yaptığınız herhangi bir işlemi otomaik hale getirebilirsiniz.
#!/bin/bash expect << EOF set timeout 20 spawn telnet 192.168.1.1 expect "BusyBox on localhost login: " send "root\r" expect "Password: " send "\r" expect "*#" send "reboot\r" expect "*#" send "exit" exit EOF
Hoşunuza gidecek başka bir senaryoya da uyarlayabilirsiniz. Mesela kendi sitenize aldıgınız reklamlara ipnizi değiştirerek tıklayan bir bota ne dersiniz 😉
Merhaba,
Dış scriptten alınan parametreyi send komutu ile başka bir scripte geçirme konusunda bir örnek verebilirmisiniz. Ya da böyle bir şey yapılabilir mi? Yani ;
send “./deneme.sh “$1” “$2″\r” Bu komut çalışmıyor.
send “./deneme.sh ali 15 “\r” Bu şekilde çalışıyor.
Çift tırnaktan mı yoksa parametre geçirmede mi problem var anlayamadım.