![2초 후에 nc 명령을 종료하는 방법은 무엇입니까? [복사]](https://linux55.com/image/51439/2%EC%B4%88%20%ED%9B%84%EC%97%90%20nc%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%A2%85%EB%A3%8C%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
IP를 반복하고 특정 서비스(예 nc -sip# mailin-01.mx.aol.com 25
: .
깃발이 있었는데 -w ...
, 제가 상상했던 것과는 달랐습니다. 즉, 나는 이 프로그램이 최대 3초 동안만 실행되기를 원하며 우리가 연결하는 곳은 항상 실행 중입니다(스크립트가 걱정하지 않아도 되는 주요 네트워크 문제를 제외하고 --- 특정 작업이 아니며, 이전에 언급됩니다) 스크립트가 실행되었습니다).
연결하고 오류 메시지가 나타나는지 확인하려면 필요합니다. 이는 사용자의 웹 페이지에 IP를 할당하기 전에 필요합니다(이는 CPanel 항목을 대체합니다. 우리는 자체 IP를 원합니다).
답변1
가장 쉬운 방법은 timeout
명령을 사용하는 것입니다. 이 timeout
명령을 사용하면 지정된 명령을 실행 timeout
하고 해당 명령이 특정 시간 초과 내에 종료되지 않으면 종료할 수 있습니다.
예를 들어
# timeout 3 sleep 1; echo exit=$?
exit=0
# timeout 3 sleep 5; echo exit=$?
exit=124
# timeout 3 nc google.com 80; echo exit=$?
nc: using stream socket
exit=124
timeout
POSIX 표준에 정의되어 있지 않아 유비쿼터스가 보장되지는 않지만 일반적인 것으로 보입니다.
답변2
http://www.varesano.net/blog/fabio/executing-program-x-seconds-then-killing-it-simple-bash-script
이게 효과가 있어
#!/bin/bash
cmd=$1
seconds=$2
echo "Executing: ${cmd} for $seconds seconds"
$cmd&
cmdpid=$!
sleep $seconds
if [ -d /proc/$cmdpid ]
then
echo "terminating program PID:$cmdpid"
kill $cmdpid
fi