Sshを介してリモートでコマンドを実行することにより、ローカルマシンからリモートサーバー上のトンネルを開こうとしています。私もsshpassを使っています。
sshpass -fpw_file.txt ssh [email protected] 'bash /home/username/do_stuff.sh &'
このdo_stuff.shには、次の1行しか含まれていません。
ssh -f -N -L 8888:hostname:9999 user@Host &
しかし、呼び出し(最初のコマンド)は返されません。一重引用符の外に置くと、強制終了されないプロセスが生成されます。これは非常に小さなメモリリークですが、これをきれいに行う方法があるかどうかを知っておくとよいでしょう。
ありがとう!
I/Oストリームをnullにリダイレクトします。 記述子が開いているBGプロセスでは、SSHが閉じない可能性があります 。
sshpass -fpw_file.txt ssh [email protected] 'bash /home/username/do_stuff.sh &> /dev/null < /dev/null &'
説明
&> /dev/null
stdoutとstderrを取得し、nullにリダイレクトします
< /dev/null
stdinを受け取り、それをnullにリダイレクトします
&
最後に、プロセスをバックグラウンドに送信します。