이 코드는 명령을 활성 상태로 유지하는 데몬이어야 합니다 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
작동합니다.