Wie legen Sie eine Verzögerung zwischen pipelining der Befehle in einem bash-Skript. E. g. cat Datei | telnet mail.domain.com 25
Habe ich ein bash-script, das eine Datei erstellt und ich möchte senden Sie eine E-Mail am Ende über telnet. Aber manchmal ausgeführt wird und manchmal ist es nicht.
Den Befehl am Ende ist
cat tempfile | telnet mail.domain.com 25
Auf dem empfangenden server sehe ich in der E-mail.melden Sie den folgenden Fehler, wenn es scheitert:
improper command pipelining after EHLO from domain.com ....etc
Dem gleichen Skript funktioniert perfekt, wenn anstelle von mail.domain.com starte ich die telnet-Sitzung in localhost also ich bin mir ziemlich sicher, dass das Dateiformat ist OK und der rest der bash-Skript funktioniert auch.
Habe ich auch versucht, mit Hilfe von standard-Umleitung statt eine Rohr -
telnet mail.domain.com 25 < tempfile
Aber wiederum das Ergebnis ist manchmal okay, manchmal nicht. Ich denke, es muss eine kleine Verzögerung zwischen die Umleitung und die telnet session-Befehl, so dass der input wird gegeben, nachdem die telnet-Sitzung hergestellt wurde, und eine Antwort wurde gegeben, aber ich weiß nicht, wie das zu tun. Ich habe versucht, mit sleep-Befehl in zwischen pipes und Umleitungen und es wird nicht funktionieren, wahrscheinlich, weil dann die Eingabe umgeleitet wird, um den sleep-Befehl.
e.g. cat tempfile | telnet mail.domain.com 25 & sleep 1
Die Einschränkung ist, dass ich in einem bash-Skript. Ist es möglich? Auch ich weiß nicht, ob es von Bedeutung ist, aber das Skript verwendet, um die Arbeit zwischen den Servern in debian squeeze mit postfix/courier-setup und nun der Empfängerseite ist eingerichtet mit debian wheezy und postfix/dovecot.
Vielen Dank im Voraus für die Hilfe
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie versuchen, so etwas wie:
öffnen der Verbindung und schreiben Sie nichts, warten Sie 5 Sekunden und schreiben Sie den rest.
{ echo -n; sleep 5; cat tempfile; } | ...
würde vermeiden eine unnötige subshell.