리눅스맨

how to edit esxi 7 crontab 크론탭 IP 자동 하는 방법

크론탭을 이용하여 esxi 7 서버의 IP를 주기적으로 확인 하는 방법입니다.

홈 PC등 개인적으로 집에서 서버를 운영할 경우 갑작스럽게 서버가 셧다운되거나 IPS사의 게이트웨이 주소 변경으로 IP가 변동되는 경우가 있습니다. 이런 경우에는 직접 서버 아이피를 확인해야하지만 원격지에서 변경된 아이피를 확인 할 수 없습니다.

재부팅하더라도 아래처럼 입력해놓을경우 초기화되지 않습니다.

/etc/rc.local.d/local.sh

/vmfs/volumes/datastore1/root/serverChecker.sh

exit 0 위에 한줄 추가

만약 cronjob 에 초기화 안되게 하려면

local.sh 항목에 매번 부팅할때마다 cronjob 자동으로 등록되도록 명령어를 입력해야합니다.

#put to crontab

echo "*/1 * * * * /vmfs/volumes/datastore1/root/serverChecker.sh" >> /var/spool/cron/crontabs/root

#cronjob force stop

kill `cat /var/run/crond.pid`

#cronjob start

/usr/lib/vmware/busybox/bin/busybox crond


vi /etc/rc.local.d/local.sh

echo "*/1 * * * * /vmfs/volumes/datastore1/root/serverChecker.sh" >> /var/spool/cron/crontabs/root
kill `cat /var/run/crond.pid`
/usr/lib/vmware/busybox/bin/busybox crond

그때 ESXi 7에 등록된 cronjob 기능을 이용하여 외부에서 변경되는 실시간 IP를 확인 할 수 있습니다.

크론탭 자동 등록하는 방법

how to VMWARE ESXi 7 crontab

1. VMWARE ESXi 7 SSH 접속을 하고 아래 폴더로 이동합니다.

cd /var/spool/cron/crontabs

yum 으로 따로 설치를 하지 않아도 이미 크론탭과 기능이 동일한 스케줄러가 동작하고 있습니다.

2. root 파일에 쓰기권한을 추가합니다.

읽기전용 root 파일을 쓰기 권한으로 변경합니다.

chmod 777 root

3. 1분마다 서버 IP를 확인 하도록 스케쥴을 등록합니다.

vi 명령어를 이용하여 root파일에 기존 리눅스 crontab -e 명령어로 사용했던 그대로 일정을 기록합니다.

재부팅, 서버부팅마다 /root 폴더가 사라지므로 폴더는 꼭 /vmfs/volumes/datastore1/root 에 만드시기 바랍니다

*/1 * * * * /root/serverChecker.sh

#min hour day mon dow commmand

  *       *        *       *       *      /shellscript.sh

4. root파일을 다시 읽기 권한 다시 변경합니다.

쓰기 권한을 다시 읽기전용 root 파일로 변경합니다.

chmod 444 root

4. 1분마다 서버 IP를 확인 하도록 등록합니다.

serverCheck.sh 파일은 /root 폴더 아래에 두었으며 내용은 wget을 이용하여

특정 웹서버에 1분마다 페이지를 읽어 그 서버에서 ESXi 7 서버의 ip를 알 수 있도록 하였습니다.

재미있는 방법으로는 ESXi 7 서버내에 CentOS 리눅스 하나 설치해서 워드프레스 서버를 하나 운영하고 그 워드프레스 주소로 ip를 확인 할 수 있습니다.

wget http://yourWebServerDomain/serverChecker.php?SERVER_NAME

1분마다 ESXi 서버의 IP가 확인 됩니다.

serverCheck.php 파일에 mysql 을 연결하여 매 분마다 들어오는 IP를 저장하고

최근 등록된 IP 순서대로 ( order by regDate DESC ) 추출하면 자신의 ESXi 서버 리스트를 만들 수 있습니다.

serverChecker.sh 파일

SERVER_DOMAIN="domain=domainName"
SERVER_INFO="&cpu=x4cpu22core44thread&cpuinfo=Intel_E7-8880v4_2.20GHz&ram=1024gb_64gx16&ssd=8TB_2TBx4"        
cd /vmfs/volumes/datastore1/root/
 
wget http://33.34.246.187/serverChecker.php?$SERVER_DOMAIN$SERVER_INFO
rm -rf /vmfs/volumes/datastore1/root/serverChecker.php*

# 1 - 30 = 4 - 10

최근에는 위의 설정도 많이 복잡해서 그냥 호스트네임 그대로 땡겨와서 IP만 체크합니다.

SERVER_HOSTNAME=`hostname`
wget http://33.34.246.187/serverChecker.php?ESXi=${SERVER_HOSTNAME} >> /etc/serverChecker.logs
echo "*/1 * * * * wget http://33.34.246.187/serverChecker.php?ESXi=${SERVER_HOSTNAME} >> /etc/serverChecker.logs" >> /var/spool/cron/crontabs/root
kill `cat /var/run/crond.pid`
/usr/lib/vmware/busybox/bin/busybox crond
rm -rf serverChecker.php*

# 1 - 30 = 4 - 10
# 1 - 30 = 4 - 10
# 두번 변경해야함!!

작성자

태그: