確立されたSSH接続シェルに後続のスクリプト実行を渡すことはできますか?

確立されたSSH接続シェルに後続のスクリプト実行を渡すことはできますか?

ssh 接続が正常に確立された後にスクリプト部分を実行したいです。作成しようとしているスクリプトでログ ファイルを簡単に tail できるようにしたいと思います。

進行中のスクリプトは次のとおりです。

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 

スクリプトを実行すると、次の結果が期待されます。

[Log Tunnel]
connecting to foo.dev.company.net
[email protected]'s password: ***********
# Output of Tail

SSH 接続を確立し、起動直後に実行する必要がある新しいスクリプトを後続のシェルに渡すことは可能でしょうか。

編集:

私の目標は、シェルでリモート サーバーのログ ファイルを tail することです。スクリプトを使用すると、簡単な入力でログ ファイルを tail できるようになります./rtail.sh foo。このコマンドを実行すると、シェル引数で選択したリモート サーバーに応じて、シェルが特定の tail 出力を表示することを期待します。次のショートカットが必要です。

  • リモートサーバーへのSSH
  • tail -f パス/to/logfile.log

答え1

私の理解が正しければ、次のようなものを探していることになります:


#!/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"

関連情報