linux保存ip
㈠ linux 下獲取本地ip地址後 怎樣
在進行Linux網路編程時,經常用到本機IP地址。本文羅列一下常見方法,以備不時之需。
獲取本機IP地址,是一個相當靈活的操作,原因是網路地址的設置非常靈活而且都是允許用戶進行個性化設置的。比如一台計算機上可以有多塊物理網卡或者虛擬網卡,一個網卡上可以綁定多個IP地址,用戶可以為網卡設置別名,可以重命名網卡。用戶計算機所在網路拓撲結構未知,主機名設置是一個可選項,並且同樣可以為一個計算機綁定多個主機名等,這些信息都會有影響。脫離了網路連接,單獨的網路地址沒有任何意義。編程中遇到必須獲取計算機IP的場景,應該考慮將這一選項放到配置文件中,由用戶自己來設置。
參考網路和書本,編程獲取本機IP地址大約有以下幾種方法。
方法一:ioctl()獲取本地IP地址
Linux 下 可以使用ioctl()函數以及結構體 struct ifreq和結構體struct ifconf來獲取網路介面的各種信息。
具體過程是先通過ictol獲取本地的所有介面信息,存放到ifconf結構中,再從其中取出每個ifreq表示的ip信息(一般每個網卡對應一個IP地址,如:」eth0…、eth1…」)。
先了解結構體 struct ifreq和結構體struct ifconf:
//ifconf通常是用來保存所有介面信息的
//if.h
struct ifconf
{
int ifc_len; /* size of buffer */
union
{
char *ifcu_buf; /*input from user->kernel*/
struct ifreq *ifcu_req; /* return from kernel->user*/
} ifc_ifcu;
};
#define ifc_buf ifc_ifcu.ifcu_buf /*buffer address */
#define ifc_req ifc_ifcu.ifcu_req /*array of structures*/
//ifreq用來保存某個介面的信息
//if.h
struct ifreq {
char ifr_name[IFNAMSIZ];
union {
struct sockaddr ifru_addr;
struct sockaddr ifru_dstaddr;
struct sockaddr ifru_broadaddr;
short ifru_flags;
int ifru_metric;
caddr_t ifru_data;
} ifr_ifru;
};
#define ifr_addr ifr_ifru.ifru_addr
#define ifr_dstaddr ifr_ifru.ifru_dstaddr
#define ifr_broadaddr ifr_ifru.ifru_broadaddr
㈡ linux操作系統本機IP儲存在哪個文件夾
IP存儲在/etc/sysconfig/network-scripts/ifcfg-eth0文件,其中包括IP地址、子網掩碼、網關.
配置臨時IP地址可以執行:
ifconfig eth0 IP地址 up
㈢ 在linux中怎麼實現開機保存ip地址到指定文件夾
樓主,你好!
可以分3步處理:
分析操作系統中使用命令查看ip地址的的結果展示格式。
將ip地址截取出來導入到目的文件。測試通過後形成shell腳本。
將截取ip地址的shell腳本加入到/etc/rc.local。
a>分析你的linux系統ifconfig的格式。 如果如下圖,則需要將inet addr:10.10.10.100這一行的信息截取出來導入到文件。
ok!