Wie stelle ich sicher, dass bash (nicht tcsh) unter Linux verwendet wird?

0

Ich habe ein Bash-Skript, mit dem ich ssheine Verbindung zu einem anderen Server herstelle und dort einige Befehle ausführe. Ich habe auf einigen Websites festgestellt, dass error ( Warning: no access to tty (Bad file descriptor). Thus no job control in this shell.) eine freundliche Meldung ist, aber mein Bash-Skript "hängt". Nachdem diese Meldung angezeigt wurde, werden keine weiteren Befehle ausgeführt. Andere Foren sollen verwendet werden ssh -t, um die Nachricht zu unterdrücken, aber es funktioniert nicht für mich. Mein Code sieht ungefähr so ​​aus:

.
.
.
stty -echo
sshpass "pwd" ssh -o StrictHostKeyChecking=no usr@1.1.1.1 'su -lc "rm -rf tmp"' 2>/dev/null
stty echo
.
.
.

Der Grund, warum ich verwende, stty-echoist, dass ich Benutzer zu root wechseln muss und das Passwort auf dem Terminal angezeigt wird (was ich nicht möchte). Ich erhalte die Fehlermeldung ( Warning: no access to tty (Bad file descriptor). Thus no job control in this shell.), nachdem ich das Passwort für root auf dem Verbindungsserver eingegeben habe (ip: 1.1.1.1).

Irgendwelche Vorschläge? Lassen Sie mich wissen, wenn weitere Erklärungen erforderlich sind. Vielen Dank! (Meine Version von Bash ist GNU Bash Version 3.2.51 (1))

Die Fehlermeldung, die ich beim Entfernen erhalte, 2>/dev/nulllautet:

Warning: no access to tty (Bad file descriptor).
Thus no job control in this shell. 
stty: standard input: Invalid argument
Redson
quelle

Antworten:

0

Wie wäre es mit Übergabe -s /bin/bashan su?

jjlin
quelle