2013-10-11 11 views
11

Bir dosya yaratan bir bash komut dosyası var ve telnet ile bir e-posta göndermek istiyorum. Ancak bazen yürütür ve bazen olmaz.Bir bash komut dosyasında pipelining komutları arasında nasıl gecikme eklenir. Örneğin. kedi dosyası | telnet mail.domain.com 25

improper command pipelining after EHLO from domain.com ....etc 

aynı komut dosyası yerine posta eğer mükemmel çalışıyor: sonunda

komutu başarısız olduğunda ben mail.log aşağıdaki hata gördüğünüz alıcı sunucusunda

cat tempfile | telnet mail.domain.com 25 

olduğunu .domain.com Telnet oturumunu localhost'ta başlatıyorum, bu yüzden dosya formatının iyi olduğundan ve bash betiğinin geri kalanının da çalıştığından eminim.

Ben de Sonuç bazen bazen iyidir değil yine standart yönlendirmeyi yerine bir boru

telnet mail.domain.com 25 < tempfile 

Ama kullanarak denedim. Yönlendirme ile telnet oturum komutu arasında küçük bir gecikme olması gerektiğini düşünüyorum, böylece telnet oturumu oluşturulduktan ve bir cevap verildikten sonra verilecek, ancak bunu nasıl yapacağımı bilmiyorum. Borular ve yeniden yönlendirme arasında uyku komutunu kullanmayı denedim ve muhtemelen işe yaramaz, çünkü bu durumda giriş, uyku komutuna yönlendirilir.

e.g. cat tempfile | telnet mail.domain.com 25 & sleep 1 

Kısıtlama, bir bash komut dosyasında yapmam gerekmesidir. Mümkün mü? Ayrıca herhangi bir öneme sahip olup olmadığını bilmiyorum, ancak betik debian sıkıştırılmış sunucular arasında çalışmak için kullanılan postfix/kurye kurulum ve şimdi alıcı son debian wheezy ve postfix/dovecot ile ayarlanır. Bağlantıyı açmak ve hiçbir şey yazma, 5 saniye bekleyin ve geri kalanı yazma

(echo -n; sleep 5; cat tempfile) | mail.domain.com 25 

: Sen gibi bir şey deneyebilirsiniz yardım

cevap

19

için şimdiden

teşekkürler.

+5

'{echo -n; 5 uyku; kedi tempfile; } | ... 'gereksiz bir alt kabuktan kaçınacaktı. – chepner

+2

Hızlı yanıt için çok teşekkürler :) Bu kusursuz bir şekilde çalıştı. Eko olmadan bile - 5 saniye bekleyip geri kalanını yazacaktır. Asla dahil etmeyi düşünmedim(). {} Ile denedim ve hala çalışıyor, böylece her iki cevap da iyi. Ancak {} ile echo-n kullanmalıyım; – gabtzi

İlgili konular