2016-11-16 6 views
0
(echo 'USER blah\n' ; echo 'PASS blah\n') | nc ... 

"nc ..." hat zwei Eingabeaufforderungen. Die Antwort auf die erste muss in der Form "USER blah ..." sein, und die Antwort auf die zweite muss in der Form "PASS blah ..." sein. In meinem obigen Bash-Skript werden die beiden Eingaben manchmal nur als Eingabe für die erste Eingabeaufforderung behandelt, NICHT für den Benutzernamen und für das Passwort. Wie kann ich sicherstellen, dass die zwei Eingaben (zwei Echos) tatsächlich als Eingaben für die zwei separaten Eingabeaufforderungen behandelt/verwendet werden?Bash-Eingang für zwei separate Eingabeaufforderungen

+1

Haben Sie versucht, die '-e' Flagge mit dem ersten' echo' Zugabe? Andernfalls druckt 'echo' nur '\ n' wörtlich. – Boldewyn

+1

[Expect] (http://expect.sourceforge.net) könnte hier helfen – damienfrancois

+0

Versuchen Sie, CRLF-terminierte Strings mit 'nc' zu senden:' (echo 'USER blah'; echo 'PASS blah') | nc -c ... '. – chepner

Antwort

-1

Versuchen this-

(echo -e "USER blah" "\n""PASS blah") | nc ... 

Diese Linie wird, die beiden Eingänge von der Neuen-Zeile getrennt passieren, die in der Regel ausreichend ist, um das Programm, nachdem das Rohr zu überzeugen, dass die zwei Eingänge in der Tat zwei Eingänge sind.

+0

Sie sollten '\ n' angeben: entweder' \\ n', '' \ n'' oder '$ '\ n'' ohne den' -e' Schalter. Andernfalls sieht 'echo' nur ein einfaches 'n', da die Shell den Backslash verschluckt. – Boldewyn

+0

@Boldewyn, danke, Anfängerfehler. Du hast Recht, es war falsch. – VM17

+0

Die '-e' Option mit' echo' macht das Skript weniger portabel. Überprüfen Sie [\ [this \]] (http://mywiki.wooledge.org/Bashism#Builtins). – sjsam

-1

eine gewisse Verzögerung Verwendung:

(echo 'USER blah\n' ; sleep 1; echo 'PASS blah\n') | nc ... 
Verwandte Themen