2013年9月3日

拿IP來當電腦名稱

windows下有用winroll來改電腦名稱,而在linux下電腦名稱沒那麼重要。不過筆者在一個時機下想辦視學生機,例如nitroshare這隻檔案分享程式評價不錯,但是你會不知下面學生機器有哪些。於是有想到如何設定電腦名稱呢?想一下用IP來當可能最好,於是查了一些資料。
1.在ubuntu下查IP指令是ifconfig,不過你會得到像以下資料:
$ ifconfig

eth0      Link encap:Ethernet  HWaddr 00:25:11:68:a6:e4 
          inet addr:10.231.97.10  Bcast:10.231.97.255  Mask:255.255.255.0
          inet6 addr: fe80::225:11ff:fe68:a6e4/64 Scope:Link
          inet6 addr: 2001:288:2263:10:225:11ff:fe68:a6e4/64 Scope:Global
          inet6 addr: 2001:288:2263:10:a41c:32d1:179a:c210/64 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7180 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6352 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3491074 (3.4 MB)  TX bytes:1710426 (1.7 MB)
          Interrupt:19

lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:835 errors:0 dropped:0 overruns:0 frame:0
          TX packets:835 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:63148 (63.1 KB)  TX bytes:63148 (63.1 KB)
雖然得到了IP,但取出來用卻有困難。
2.於是想到寫一個sh來用,其中用到了grep這個功能
myip=$(ifconfig |grep "inet addr")
這個時候就會過濾掉不少資料
   inet addr:10.231.97.10  Bcast:10.231.97.255  Mask:255.255.255.0
          inet addr:127.0.0.1  Mask:255.0.0.0
再過濾
w=$(echo $myip | sed "s/inet addr:127.0.0.1 Mask:255.0.0.0//g")
x=$(echo $w | sed "s/inet addr://g")
y=$(echo $x | sed "s/Bcast:10.231.97.255 Mask:255.255.255.0//g")
就會得到自己的IP
注意:藍色部分要改成自己網路實際情形

3.寫入/etc/hostname
echo $y >/etc/hostname
4.重新執行hostname
/etc/init.d/hostname restart

5.把檔案放入/etc/init.d資料夾中並讓它開機執行
sudo update-rc.d chhostname.sh
如果想下載我的檔案來改,請點選:
https://docs.google.com/file/d/0Bz6-J_NwALFBZzlVYUdNRzZBRjg/edit?usp=sharing

張貼留言