私はLinuxベースのルータを持っており、ホームオートメーションコントローラでこれを「制御」しようとしています。マイオートメーションコントローラでは、「双方向文字列」ドライバを使用してリモコンのボタンを押してから、Linuxルータに文字列を送信できます。送信された文字列がルーターで実行されることを望みます。
ルータへのSSH接続中に次のコマンドを実行すると、これを行うことができます。
$ rm -f /tmp/f; mkfifo /tmp/f
$ cat /tmp/f | /bin/sh -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f
ターミナルウィンドウを開いたままにすると、オートメーションコントローラはiptablesを変更する文字列を送信できます。
私が経験している問題は、SSH接続を閉じた後もこれが持続しないことです。 SSH接続が閉じた後も、ルータにコントローラからコマンドを受信して実行させる方法はありますか?
以下は、私が送信する文字列の例です。
iptables%20-I%20INPUT%20-s%20192.168.1.214%20-j%20DROP%0A
基本的に私の最終目標は、ボタンを1つだけ押してネットワーク内の特定のデバイスへのトラフィックを減らすことです。
ホームラップ環境なので安全は問題になりません。
ベストアンサー1
nohup
SSH接続が閉じた後でもコマンドを実行できるようにしたい(遠隔交換員が電話を切る。)。プロセスは と同じです。この回答:
nohup sh -c 'rm -f /tmp/f ; mkfifo /tmp/f && cat /tmp/f | /bin/sh -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f'