Cuma, Kasım 18, 2011

expect aracının kullanımı. sftp / expect entegrasyonu

Bir iş için SFTP bir web sitesinden firmaddmmyy.firmaadi formatında dosya indirilmesi ve bunun rutin olarak yapılması istendi. FTP olsa kolaydı, bir shell scripti içinde alt alta komutları sıralayınca basitçe halledebilirdik ancak site yalnızca SFTP destekleyince işler karıştı.

SFTP ile yine argümanları sırasıyla ve ayrı ayrı göndermek mümkün ama iş kullanıcı adından sonra şifre göndermeye gelince SFTP mızıkçılık yapıyor. İzin vermiyor yani.

Bu durumda araya bir 'şey'in girip bu tür girdi bekleyen komutlara istediği cevabı göndermesi ve bunu da yine bir 'yığın' mantığıyla yapması gerekiyor. Gözüken buydu.

İşte burada 'expect' devreye giriyor. TCL diliyle entegre olan bu uygulama, bu tür ihtiyaçları karşılamak için birebir. Ancak Solaris için expect'i Sunfreeware.com'dan indirmek çok zahmetli. Bağımlılıklar can sıkıyor. OpenCSW'den indirmek daha kolay.

Expect'in detaylarına girecek değilim ama basit bir örnekle anlatmakta fayda görüyorum.


#!/opt/csw/bin/expect -f
# Asagidaki DOSYA_ADI degiskeni, sistem icinde tanimlaniyor. Olmadan calismayacaktir.


set timeout -1
spawn /usr/bin/sftp mahmure@veri.com
expect "password"
send "123456\r"
expect "sftp"
send "cd mahmure\r"
expect "sftp"
send "ls -l\r"
expect "sftp"
send "lcd /data/ftp/mahmure_local\r"
expect "sftp"
send "get $env(DOSYA_ADI)\r"
expect "sftp"


Aşağıda da bu konu hakkındaki enteresan linkler bulunuyor.


Automating sftp with expect script


http://jibbysununix.blogspot.com/2010/01/automating-sftp-with-expect-script.html

Scripting the OpenSSH, SFTP
http://www.scottklement.com/presentations/Setting%20up%20and%20Scripting%20the%20OpenSSH,%20SFTP%20and%20SCP%20Utilities%20on%20IBM%20i.pdf


SFTP Bash script with expect


http://www.admin-hints.com/2009/05/sftp-bash-script-with-expect.html

Automating SFTP using expect   
http://www.linux-bsd-central.com/index.php/content/view/26/
http://www.stratigery.com/scripting.ftp.html

Hiç yorum yok: