Friday, February 11, 2005

利用Debian 的 ifupdown來做到根據不同的Gateway設定不同的網路組態

買了新的notebook就開始想弄一些有的沒有的
所以了這篇心得

================終極目標=====================
當我接上網路線的時候...
電腦會自動幫我檢查我的網路線接到那
然後把IP設定好...
=============================================


在debian下有個很好用的ifupdown的機制
就是你把某個interface的相關ip設定寫在
/etc/network/interfaces
ex:

iface eth0 inet dhcp

這樣當你輸入
ifup eth0
他就會把你把eth0用dhcp來連上網路

當然他也可以使用static IP
ex:
iface eth0 inet static
address 192.168.0.100
netmask 0xffffff00
gateway 192.168.0.1

而當你想要把這個interface關掉時
輸入
ifdown eth0
就可以了

====================稍微進階分隔線=====================

如果你以為ifupdown只有上面那些東西
那你就錯了
他可以幫你在把某個interface啟用之前先執行一些指令

iface eth0 inet dhcp
pre-up /usr/local/bin/print_cch_is_bigbig

如此ifup便會在把eth0啟動前去執行/usr/local/bin/print_cch_is_bigbig
另外也可以使用up,down
iface eth0 inet static
...
up route add -host x.x.x.x y.y.y.y
down route del x.x.x.x

這個應該就很好懂了就是在ifup的時候跑route add, ifdown時跑route del


===================我很無聊分隔線=====================

我為了方便花了一些時間做這個...(嗚...我的論文阿...>
我為了方便花了一些時間做這個...(嗚...我的論文阿...>
首先我想要讓我的系統在eth0的網路線有插著的時候才可以啟動
所以我在eth0的設定時加了一行
iface eth0 inet static
pre-up [ `ifconfig eth0 up; ifconfig eth0 |grep RUNNING` != "" ]

上面這個意思就是先把eth0啟動(此時可能沒有IP)
然後去檢查ifconfig eth0產生的message裡面有沒有RUNNING這個字
有代表網路線有接起來, 這時ifup才會把eth0啟動










只有這樣嗎?!!!!!
那你太小看一個深夜孤單男子的潛力了
請想像在半夜的時候, 有個男人很孤獨的坐在桌前
整個世界裡陪伴他的只有他面前的notebook
他將雙手舉起...開始讓notebook響起了如同機關槍似的聲響
背景請配上The Phantom of the Opera出場的音樂 XD

..............
好吧 我真的很無聊

我為了能夠讓我的nb自動判斷我在家裡還是lab
所以我繼續利用了interfaces這個設定檔裡面的mapping的功能
首先我在裡面加了下面這兩行

mapping eth0
script /usr/local/bin/get-lan-gw-mac

就是說eth0他會利用/usr/local/bin/get-lan-gw-mac的stdout來做mapping
而/usr/local/bin/get-lan-gw-mac這個程式會幫我獲得
我所接上的Gateway的MAC address
然後印在stdout



例如我在實驗室的gateway為192.168.0.1 MAC是00:02:B3:33:DD:BA
所以設定如下

mapping eth0
script /usr/local/bin/get-lan-gw-mac

iface 00:02:B3:33:DD:BA inet static
address 192.168.0.22
netmask 0xffffff00
gateway 192.168.0.1


這樣eth0如果接到我實驗室的gateway上..就會把IP設成192.168.0.22
我另外也寫了一個家裡adsl的

iface 00:30:88:00:58:8b inet static
address 61.64.162.XXX
netmask 0xffffff00
gateway 61.64.162.254

這樣他就可以利用Gateway的MAC address來決定用那個設定

但是 問題來了
要怎麼拿到Gateway的MAC address
大致上我是利用arping這隻程式來做arp level的ping的動作
所以跑起來有點慢
不過因為interface不多我還可以接受
script在下面 我也懶得解釋
有興趣的人可以拿去看看
希望有人能幫我改進啦...XD

====================================================================

#!/usr/bin/perl

$IFACE = $ARGV[0];

if (`ifconfig $IFACE up;ifconfig $IFACE |grep RUNNING` eq "") {exit 1;}

$MAC = "";

my %gateways;

my $use = 0;

my $address = "";
my $gateway = "";

open ETCIFACES,"
while (){
if (/iface/){
if (/iface ..:..:..:..:..:../) {
$use = 1;
$address = "";
$gateway = "";
next;
}else { $use = 0;}
}
next if ($use == 0);
if (/address\b*([^\b]*)/){
$address = $1;
}
if (/gateway\b*([^\b]*)/){
$gateway = $1;
}
if ($gateway != ""){
chomp $gateway;

chomp $address;
$gateways{$gateway} = $address;
}
}
close ETCIFACES;

for $i (keys %gateways){
$MAC = `arping -c 1 -S $gateways{$i} -i $IFACE $i|grep from`;
$MAC =~ s/60 bytes from ([^ ]*) .*/$1/;
last if ($MAC ne "");
}
print $MAC;

exit 0;

==================================================================


呼呼...我真的是太無聊了....
因為...
世界上有一種東西叫做dhcp................................

Friday, February 04, 2005

2005/01/31 娃娃出嫁

娃娃是我的表姊
她在2005/01/31這天出嫁
在此祝他永遠幸福快樂 :)


早上9:00多我媽就打電話給我要我趕快去
因為早上她們是在女方家裡有一些儀式
可是我還是摸到10:00才出門...XD
到了表姊家 我居然是最後一個錄感謝辭的 :$

壓軸的當然不能漏氣...
我在恭喜她們之外...
也鼓勵了一下其他表姊趕快嫁一嫁 =.=
我們家到現在才嫁出去一個女生...orz
再跟爸媽敬茶的時候
我表姊跟我舅媽哭的西哩花拉的
在場的其他表姊也很多都哭了...
真的蠻感傷的...
不過因為是喜事...大家都要一直說這是喜事阿...要笑

下午變成跟男方去教堂
可是...全部講台語...@_@
聽到台語的誓詞時
我有點傻住....=.=

"哩萬異己系郎愛丟伊嗎"
"哇萬億"


晚上男方請101宴會廳
相當高級...菜色也不錯...
只是聽說不便宜...:P


這裡有四個美女的合照

Monday, February 23, 2004

linux上備分

今天硬碟忽然出現怪聲音....
為了避免慘劇發生
我立刻從lab拿回cd-rw來輩分一些重要的東西
我大約看了一下我需要備份的資料量大概有20Gb
這樣要輩備份到cd裡面實在是有點累
所以我就找了一些軟體來試試看


第一套叫做cdbackup
用perl寫的 可是有點不好用...:P
而且不太穩定
所以我試用了一次

第二次我使用multicd
他只要寫/etc/multicdrc這個設定檔
接下來他就會幫你把所有的東西用ext2的fs來備份
這樣的好處是就不用管那些長檔名跟中文檔名的問題了 ^^||
他還可以開兩個thread(雖然我覺得可能要3 or 4個thread才夠快)
一個thread作create image
另一個thread則是執行cdrecord
所以我只要一值準備換cd就好了
方便蠻多

Wednesday, February 11, 2004

C860入手...

前天拿到我的C860了...
雖然要寫lab的東西又要做實驗
可是我還是花很一些時間在玩我的c860...XD
今天幫他拍了一些照片

放在這裡


先說明一下...
前面幾張是C860沒開機的照片
後面是有開機的照片
然後跟我之前的5500一起合照..XD
最後放上我拿來放C860的包包(hedgren)

Monday, January 05, 2004

我的outlook,evolution,手機跟pda

最近買了SE Z600,也開使用他裡面的PIM功能
所以就在想要如何將我的outlook,evolution,pda裡面的pim來做sync
我的機器如下:
windows XP on IBM A31 with BT dongle
outlook 2k
PC with debian (sid)
evoution 1.4
sharp zaurus SL-5500
SonyEricsson Z600


首先買手機or pda都會有內附outlook跟他們的sync的工具...
我的z600我是用bt來做sync, zaurus則是用usb
這樣他們之間就可以直接跟outlook來做sync了

然後在linux上有multisync
http://multisync.sourceforge.net/
可以讓手機,evolution,pda來做sync
他其實支援的東西不少...還有支援syncml,irml等等
也蠻容易使用的

最後最困難的就是outlook跟evolution之間的sync了
目前我只有找到一個可以幫我做outlook->evolution的東西
http://outport.sourceforge.net/
他可以把outlook export 成evolution的.ics
不過要在經過iconv -f big5 -t utf8的轉換...(因為中文問題:P)
這樣就可以把task,calendar等轉到evolution了....
可是我一直找不到方法做evolution->outlook...殘念....

一些其他的link
http://laughingmeme.org/archives/000281.html
http://www-106.ibm.com/developerworks/xml/library/x-syncml3.html
http://nicolas.bougues.net/syncml/

Thursday, September 28, 2000


網頁圖片群