Ich möchte einen Skriptteil ausführen, nachdem eine erfolgreiche SSH-Verbindung hergestellt wurde. Ich möchte es mir einfacher machen, eine Protokolldatei mit einem Skript zu versehen, das ich gerade schreiben möchte.
Hier ist das Skript in Arbeit:
echo "[Log Tunnel]"
if [ "$1" == "foo" ]
then
echo "connecting to foo.dev.company.net"
ssh foo.dev.company.net
tail -f var/logs/staff/backend/backend.log # what's the way to do this
fi
if [ "$1" == "bar" ]
then
echo "connecting to bar.dev.company.net"
ssh bar.dev.company.net
fi
Wenn ich das Skript ausführe, erwarte ich Folgendes:
[Log Tunnel]
connecting to foo.dev.company.net
[email protected]'s password: ***********
# Output of Tail
Ich frage mich, ob es überhaupt möglich ist, die SSH-Verbindung herzustellen und der nachfolgenden Shell ein neues Skript zu übergeben, das sie direkt nach dem Start ausführen soll.
Bearbeiten:
Mein Ziel ist es, in meiner Shell ein Tail zu einer Protokolldatei auf einem Remote-Server zu haben. Das Skript soll das Tailen dieser Protokolldateien durch einfaches Eintippen erleichtern ./rtail.sh foo
. Wenn ich diesen Befehl ausführe, erwarte ich, dass die Shell die jeweilige Tail-Ausgabe anzeigt, abhängig vom Remote-Server, den ich mit dem Shell-Argument ausgewählt habe. Ich möchte nur eine Abkürzung für:
- SSH zum Remote-Server
- tail -f Pfad/zu/Logdatei.log
Antwort1
Wenn ich das richtig verstehe, suchen Sie nach so etwas:
#!/bin/sh
echo "[Log Tunnel]"
if [ "$1" = "foo" ]
then
server="foo.dev.company.net"
file="var/logs/staff/backend/backend.log"
elif [ "$1" = "bar" ]
then
server="bar.dev.company.net"
file="some/other/file"
fi
echo "connecting to $server"
ssh "$server" tail -f "$file"