ローカルで実行しているウェブサービスがあり、開発環境では、実行するたびにIPアドレスが動的に設定されます。面倒なことに、毎回IPを調べて、http://$IP/foo
たとえば、サービスの最新の IP を印刷し、要求されるたびに名前を解決して出力するようhttp://my_service/foo
なスクリプトに移動して使用できるようにしたいと思います。/home/me/find_ip.sh
my_service
find_ip.sh
完全な DNS サーバーをローカルに設定せずにこれを実行できますか?
手っ取り早いハックはありますか?
答え1
最も簡単な解決策は、ファイルmy_service
に追加することです:/etc/hosts
127.0.0.1 localhost my_service
または
127.0.1.1 my_service
もう一つの解決策としては仮想ネットワークインターフェースを追加する。
編集#1:
my_service
DNS サーバーなしでローカルで動作させるための簡単な方法は、を変更することです/etc/hosts
。
- 作成する
/home/me/find_ip.sh
#!/bin/bash
FILE_OLD_IP=/tmp/ip.txt
OLD_IP='0.0.0.0'
NEW_IP=`ip route get 1 | awk '{print $NF;exit}'`
if [ -f "$FILE_OLD_IP" ]; then
OLD_IP=`cat $FILE_OLD_IP`
fi
if [ $NEW_IP != $OLD_IP ]; then
sed -i "s/.*my_service/$NEW_IP\tmy_service/" /etc/hosts
echo $NEW_IP > $FILE_OLD_IP
logger "NEW_IP: $NEW_IP"
else
logger "CURRENT_IP: $NEW_IP"
fi
exit 0
- cronジョブをスケジュールする
sudo crontabe -e
:
*/1 * * * * /home/me/find_ip.sh