netcat으로 원격 실행

Posted at 2009/03/19 15:21 // in Tips/Utility programs // by Daniel

신뢰하는 시스템간에서 간단하게 원격 명령을 시키고 싶을 때

(저는 임베디드 보드랑 호스트의 경우였습니다)

호스트에서 스크립트로 명령어를 전송하면 타겟에서 실행하게 하고 싶었어요


nc를 사용했습니다.

타겟은 서버가 되고 호스트는 클라이언트가 됩니다.

서버(타겟)

서버 스크립트 (/root/ncsrv_daniel.sh)

#!/bin/sh
while true
do
echo starting new nc session
nc -v -l -p 1234 -e /bin/sh
done

shell 을 띄우도록 설정.

타겟의 프롬프트에서 해당 스크립트 실행


클라이언트(호스트)

호스트 스크립트

echo ./remCmd.sh\;exit | nc 192.168.1.111 1234[1]

nc로 접속한다음 ./remCmd.sh;exit를 입력하도록 함.

remCmd.sh가 원격으로 타겟에서 실행하고자 하는 프로그램. 타겟의 /root/에 있음.


테스트 스크립트 (nctest.sh)

#!/bin/bash

ok_count=0
fail_count=0

for i in `seq 1 100`;     100번 반복 테스트.
do
echo ${i}th run...
echo ./remCmd.sh\;exit | nc 192.168.1.111 1234
result=$?
echo done ${i}th run. return $result
if [ $result -eq 0 ] ;
then
((ok_count++))
else
((fail_count++))
fi
sleep 1      종료후 nc 서버가 다시 뜨는 데 시간이 걸려서 기다려줌.
done
echo OK: $ok_count
echo FAIL: $fail_count


[1] 또는

nc 192.168.1.111 1234 –c “echo ./remCmd.sh\;exit” (또는 적절한 스크립트)

를 실행해도 될 것임. (테스트해보진 않았음)

크리에이티브 커먼즈 라이센스
Creative Commons License

이 글에는 트랙백을 보낼 수 없습니다

  1. Daniel

    2009/03/19 16:31 [수정/삭제] [답글]

    nc를 써서 원격으로 날짜 셋팅하기

    호스트에서
    echo date -u \"+%Y%m%d %T\" -s \"`date -u "+%Y%m%d %T"`\"\;exit | nc 192.168.1.112 1234
    하면 됨

  2. 비밀방문자

    2010/01/29 00:53 [수정/삭제] [답글]

    관리자만 볼 수 있는 댓글입니다.