このコードは、コマンドをアクティブに保つデーモンでなければなりませんnc
。nc
インスタンスが死ぬと、デーモンは機能するはずです。更生それ。
#!/bin/sh
if [ "$1" != "__forked__" ]; then
setsid "$0" __forked__ "$@" &
exit
else
shift
fi
trap 'echo "Clean up and exit"; kill $nc_pid; exit' TERM
exec > outfile
exec 2> errfile
exec 0< /dev/null
while true; do
(nc -lkp 1234 -e /usr/bin/bash &>/dev/null) &
nc_pid=$!
wait $nc_pid
kill $nc_pid &>/dev/null
done
このコードを実行すると、古いnc
インスタンスを終了せずに新しいインスタンスを作成し続けます。
logan 14443 0.0 0.0 2588 1860 ? S 18:45 0:00 nc -lkp 1234 -e /usr/bin/bash
logan 14446 0.0 0.0 2588 1844 ? S 18:45 0:00 nc -lkp 1234 -e /usr/bin/bash
logan 14449 0.0 0.0 2588 1900 ? S 18:45 0:00 nc -lkp 1234 -e /usr/bin/bash
logan 14452 0.0 0.0 2588 1888 ? S 18:45 0:00 nc -lkp 1234 -e /usr/bin/bash
logan 14455 0.0 0.0 2588 1880 ? S 18:45 0:00 nc -lkp 1234 -e /usr/bin/bash
logan 14458 0.0 0.0 2588 1944 ? S 18:45 0:00 nc -lkp 1234 -e /usr/bin/bash
logan 14461 0.0 0.0 2588 1880 ? S 18:45 0:00 nc -lkp 1234 -e /usr/bin/bash
...
私が望むもの一つnc
いつでもインスタンスを使用できます。このコードを修正する方法は?
答え1
では動作しません/bin/sh
。に切り替えると/bin/bash
機能します。