2013-06-04 41 views
5

yürütülürken yardımcı programı çalışmadığından, etkileşimli yürütme için beklenen yardımcı programı kullanan bir unix komut dosyası var. Bu betik, unix sunucudan çalıştırdığımız zaman iyi çalışır.jenkins

Bu komut dosyasını Jenkins'den çalıştırırsak, çalışmıyor.

Aşağıda jenkins

spawn sudo cp /abcd/sjws/config/obj.conf /abcd/sjws/config/obj.conf_jenkins 
Password: 
Password: 
Build step 'Execute shell' marked build as failure 
Finished: FAILURE 
+0

Sorunun, kabukun $ var değişkenini beklenen komut dosyasına genişletme biçimi olup olmadığını merak ediyorum: '' $ var \ r '' ı göndermek için '' gönderin \ '$ var \ r \' 'yazıp '' –

cevap

0

çalıştırdığınızda Aşağıda O Jenkins interaktif komut modeli desteklemediği görünüyor çıkışı komut

var="xxxxx" 
expect -c " 
    spawn sudo cp /abcd/sjws/config/obj.conf /abcd/sjws/config/obj.conf_jenkins 
    expect { 
    "Password:" { send $var\r;interact } 
    } 
    exit 
    " 

olduğunu.

Parolayı etkileşimli olmayan bir şekilde iletmek için sshpass aracını kullanmayı deneyin.

install sshpass

$ sshpass -p "password" {your command} 
1

= 'xxxxx' yerine var = "xxxxx" nin var kullanmak ediniz. Umarım bu yardım.

7

Jenkins gerçek bir uçbirimden çalıştırılmadığı için, interact gerçekten işe yaramıyor.

Sen bu soru çok benzer

expect eof 
wait 
+0

Teşekkür ederim! Beni çok zaman kurtardı. –

+0

Jenkins, CentOS'ta çalışırken, Ubuntu'da çalışırken çalışmadı. Yapı, Ubuntu'da olduğunda kilitleniyor. Bununla ilgili bir fikrin var mı? Lütfen bana bildirin .. Teşekkürler –

+0

Belki bir sebepten dolayı Ubuntu'da ortaya çıkan süreç çıkmıyor mu? Belki de daha önceki hatalı beklentiler nedeniyle girdi beklemekte midir? –

0

ile interact değiştirebilirsiniz: Jenkins not waiting on call to a bash script with expect; Kullanıcıyı değiştirmek için "su" yardımcı programını kullanırken özellikle benzer problemle karşılaşan kullanıcılar için, lütfen kullanıcının değiştirildiği anda Jenkins'in SSH bağlantısını kapattığını unutmayın. Yeni kullanıcıyla komut vermeye devam edemezsiniz. gibi, doğrudan komutu gönderiyor şekilde Senaryonu Tasarım: o zaman

spawn su - username -c "yoursinglewordcommand" 

ve her zamanki gibi beklemek komut (ben etkileşim komutuyla başarılı da oldu) geri kalanı.