這是為了要解決我電腦的一個問題,就是我的 Linux 站是用VMware架起來的,Linux 的IP是用撥接的固定IP,而Windows XP是撥接的動態IP,問題是動態IP不能佔有太久,一段時間就會強迫換一個IP,所以我在遠端桌面時就很難掌握Windows XP的IP到底是多少? 為了解決這個問題我做了以下工作。
概念:
1.以下所有動作必須每天自動執行
2.在XP中先c:\>ipconfig > ip.txt,先得到目前IP且存成ip.txt文字檔
3.把ip.txt用ftp上傳到Linux中的某一個空間
4.在linux中得到ip.txt,把IP撈出來更新DNS
實作:
1.Windwos XP中寫一個批次檔
— run.bat —
@echo off
ipconfig > ip.txt
ftp -v -n -i -s:ftp.txt
2.ftp.txt 寫登入ftp時下的指令,預寫好與 run.bat 放在一起
— ftp.txt —
open 192.168.1.100
user
smallken
<passwd>
put ip.txt
bye
3.在 Linux 中寫一支script檔
— update_dns.sh —
#!/bin/bash
# 更新 testip.vblog.tw 的 IP
# dnsip: 原本dns server 的 IP 設定
dnsip=$(grep ‘testip’ /var/named/chroot/var/named/vblog.tw.zone | awk ‘{print $3}’)
# xpip: XP 的 IP
xpip=$(tail -n 3 /home/smallken/ip.txt | grep IP | awk ‘{print $15}’)
# dnsdate: dns 的 serial number,以日期來編號
dnsdate=$(grep “seria” /var/named/chroot/var/named/vblog.tw.zone | awk ‘{print $1}’)
# today: 以今天的日期來當 dns 的 serial number
today=$(date “+%Y%m%d1”)
# 如果xp的IP與原來dns設定的IP不同,則更新 dns 的 zone 資訊
if [ “$dnsip” != “$xpip” ]; then
sed -e “s/$dnsip/$xpip/gi” -e “s/$dnsdate/$today/gi” /var/named/chroot/var/named/vblog.tw.zone > /tmp/tmp.zone.txt
mv /tmp/tmp.zone.txt /var/named/chroot/var/named/vblog.tw.zone
service named reload
# 把 IP mail 給自已
cat /home/smallken/ip.txt | mail -s `date` smallken@gmail.com
fi
4.「開始」→「設定」→「控制台」→「排定的工作」設定 XP 中的 run.bat 每天早上7點跑
5. Linux 中的 update_dns.sh 每天早上8點跑
# vi /etc/crontab
1 8 * * * root /root/update_dns.sh
都設定好之後,我每次遠端連線只要連testip.vblog.tw就好囉^^