2016-12-21 3 views
1

Ich versuche, eine geschachtelte ssh-t-t auszuführen, aber es wird mir die Umgebungsvariablen nicht zur Verfügung stellen, wenn Sie mit cat und echo arbeiten.

#!/bin/bash 

pass="password\n" 
bla="cat <(echo -e '$pass') - | sudo -S su -" 
ssh -t -t -t -t jumpserver "ssh -t -t -t -t server \"$bla\" " 

Ich bekomme eine Ausgabe ohne irgendwelche Variablen in Betracht gezogen. (z. B. PS1 wird nicht angezeigt, aber Befehle funktionieren einwandfrei) Das Problem bezieht sich auf cat <(echo -e '$pass') -, aber dies war der Weg echo am Leben zu erhalten, nachdem das Passwort für sudo bereitgestellt wurde.

Wie kann ich dies erreichen und Umgebungsvariablen erhalten, um eine korrekte Ausgabe zu erhalten?

Danke.

Antwort

0
  1. Die -tt ist genug. Die Verwendung von mehr -t fügt keinen weiteren Effekt hinzu und macht nur den Eindruck, dass Sie keine Ahnung haben, was Sie tun.

  2. Was ist der Sinn von cat <(echo -e) Konstruktion? Nur das Schreiben echo würde das gleiche ergeben, oder?

  3. Warum zu verwenden sudo su? sudo macht schon alles was du brauchst, oder?

Also, wie kann es in irgendeiner modischen Weise aussehen?

pass="password\n" 
bla="echo '$pass' | sudo -Si" 
ssh -tt jumpserver "ssh -tt server \"$bla\"" 

Und funktioniert es? Versuchen Sie, die Befehle mit -vvv Schalter auf die ssh zu debuggen. Es zeigt Ihnen, was tatsächlich ausgeführt wird und an die andere Shell weitergegeben wird.

+0

Danke für die Antwort! 1. Das Multiple-t wurde hinzugefügt, da das Handbuch von ssh "Multiple -t options force tty allocation" angibt. 2. echo proc stirbt und tötet das sudo su - deshalb habe ich diese konstruktion benutzt, 3. ich brauche eine interaktive shell als root also sudo! = Sudo su – Raz3k

+0

'sudo -i' ist was du brauchst. Wenn Sie die Standardeingabe für das Sudo schließen, endet es offensichtlich. – Jakuje

+0

habe es gerade versucht und ohne die 'cat' Konstruktion tötet es die Verbindung, danke. – Raz3k

Verwandte Themen