『壹』 linux:怎樣獲取伺服器IP地址
第一步:激活網卡 系統裝好後默認的網卡是eth0,用下面的命令將這塊網卡激活。
# ifconfig eth0 up 第二步:設置網卡進入系統時啟動想要每次開機就可以自動獲取IP地址上網,就要設置網路服務在系統啟動時也啟動。Linux有一點與windows不同的是很多服務默認是停止的,而且你在某次使用該服務時啟動這個服務,但是沒設置它為默認啟動,則下次進入系統這個服務依然是停止的。下面是設置網路服務在系統啟動時也啟動的方法。使用chkconfig命令讓網路服務在系統啟動級別是2345時默認啟動。# chkconfig --level 2345 network on第三步:修改網卡文件ifcfg-eth0修改ifcfg-eth0文件,設置ONBOOT的值為yes,讓網路服務啟動時使用該網卡。設置BOOTPROTO的值為dhcp,讓網卡從DHCP伺服器自動獲取IP地址。# vi /etc/sysconfig/network-scripts/ifcfg-eth0ONBOOT=yesBOOTPROTO=dhcp總結:通常情況下第三步是最重要的,因為大部分Linux系統默認網路服務是系統啟動時也啟動的,網卡也是啟用的,只要設置好第三步,然後使用下面的命令啟動網路服務就OK。# service network start配置靜態IP地址上網與動態IP地址上網同出一轍,修改ifcfg-eth0,然後用命令service network retart重啟網路服務。DEVICE=eth0
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS=8.8.8.8
BOOTPROTO=static
ONBOOT=yesdebian: 編輯/etc/network/interfaces# The loopback network interfaceauto loiface lo inet loopback
# The primary network interface
allow-hotplug eth0auto eth0iface eth0 inet static
address 192.168.1.36
netmask 255.255.255.0
gateway 192.168.1.10 #公司的網關是192.168.1.10,一般是192.168.1.1
保存編輯結果,並重啟網路服務
『貳』 Linux下如何通過編程得到DNS ip地址和默認網關ip地址。(C 語言)
改配置文件不行么??
IP和netmaske在/etc/sysconfig/network-scripts/ifcfg-eth0 (如果只有一塊網卡)
DNS服務在Linux中式named需要安裝可以在網上搜到
首選DNS的設置在/etc/resolv.conf
『叄』 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 c怎麼獲得IPv6地址
編輯文件/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="dhcp"
#BOOTPROTO="static"
HWADDR="2C:27:D7:31:2C:4C"
#IPADDR="192.168.0.2"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
保證IPV6選項為YES ,所處環境中有IPV6網路的話就可以自動獲取了.自己也可以用linux搭建一個.
然後用ifconfig eth0 查看網卡信息參數
『伍』 獲取Linux IP地址的六種方法總結
本文總結六種查看Linux IP地址的方法,方便以後的運維開發工作。
在介紹前先學習一下三個命令行篩選的主要的指令,也是頻繁使用到的命令。
1、head。 head 命令可用於查看文件的開頭部分的內容,有一個常用的參數 -n 用於顯示行數,默認為 10。
運行head --help查看說明信息:
-q 隱藏文件名
-v 顯示文件名
-c<數目> 顯示的位元組數。
-n<行數> 顯示的行數。
2、grep。 grep 命令用於查找文件里符合條件的字元串。運行grep --help查看說明信息,參數太多主要有以下幾種:
grep -r遞歸選擇。
grep -v反選,顯示不包含匹配文本的所有行。
grep -n顯示符合樣式的那一行之前。
grep -A顯示符合範本樣式的那一列之外,並顯示該行之後的內容。
3、awk。 強大的文本分析工具,命令使用過於復雜(awk --help),只需要知道 awk '{print$2}'為列印第二行數據。
4、tail 。tail命令可用於查看文件的結束部分的內容,有一個常用的參數 -n 用於顯示行數,默認為 10。tail --help查看主要的參數:
tail -n顯示最後多少行
tail -c顯示最後十個字元
tail -f 循環讀取,跟蹤顯示最後十行
5、cut。 顯示每行從開頭算起的文字。
cut -b :以位元組為單位進行分割。
cut -c :以字元為單位進行分割
cut -d :自定義分隔符,默認為製表符
cut -f :與-d一起使用,指定顯示哪個區域
無線網卡地址:
echo wlan0=`ifconfig wlan0 | head -n2 | grep inet | awk '{print$2}'`
有線網卡地址:
echo eth0=`ifconfig eth0 | head -n2 | grep inet | awk '{print$2}'`
或者命令:
ifconfig | grep "inet " | cut -d: -f2 | awk '{print $1}' | grep -v "^127."
無線網卡地址:
ip address | grep wlan0 | awk '{print$2}'
有線網卡地址:
ip address | grep eth0 | awk '{print$2}'
或者
echo eth0=`ip address show eth0 | head -n4 | grep inet | awk '{print$2}'
echo wlan0=`ip address show wlan0 | head -n4 | grep inet | awk '{print$2}'
運行hostname -help命令查看說明信息:
Program options:
-a, --alias alias names
-A, --all-fqdns all long host names (FQDNs)
-b, --boot set default hostname if none available
-d, --domain DNS domain name
-f, --fqdn, --long long host name (FQDN)
-F, --file read host name or NIS domain name from given file
-i, --ip-address addresses for the host name
-I, --all-ip-addresses all addresses for the host
-s, --short short host name
-y, --yp, --nis NIS/YP domain name
hostname -i得到環回地址127.0.1.1, hostname -I得到具體的網卡信息192.168.31.82 。
php語言查看ip就是使用函數shell_exec來執行shell命令。
比如:
<?php
echo shell_exec("echo wlan0=`ifconfig wlan0 | head -n2 | grep inet | awk '{print$2}'`");
?>
然後執行php ip.php 。shell_exec()裡面可以放置任何shell命令。這個方法的意義在於php可以通過網頁對外提供服務。
#!/usr/bin/env python
import socket
import fcntl
import struct
def get_ip_address(ifname):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
return socket.inet_ntoa(fcntl.ioctl(
s.fileno(),
0x8915, # SIOCGIFADDR
struct.pack('256s', ifname[:15])
)[20:24])
Local_wlan0=get_ip_address("wlan0")
Local_lo=get_ip_address("lo")
#Local_eth0=get_ip_address("eth0")
print Local_wlan0
print Local_lo
#print Local_eth0
利用socket包,然後執行python ip.py 得到wlan0信息。
#!/usr/bin/env python
import os
def get_ip():
out = os.popen("echo wlan0=`ifconfig wlan0 | head -n2 | grep inet | awk '{print$2}'`").read()
print out
if __name__ == '__main__':
get_ip()
和php的shell_exec函數類似,os.popen()裡面可以放置任何shell命令。注意有個函數os.system的結果只是命令執行結果的返回值,執行成功為0;os.popen()可以讀出執行的內容,輸出的結果比較特殊,帶換行符\n 。
『陸』 怎麼用C語言獲取Linux系統的網卡IP地址
man exec 裡面的函數可以用來執行命令
『柒』 請問linux下有c語言函數或者代碼可以獲取與之相連設備的ip嗎
有的fd為你連接設備的網路套接字。
你直接輸入套接字就可以得到了連接設備ip和埠了。
struct sockaddr_in sa;
int len1 = sizeof(sa);
if(getpeername(fd, (struct sockaddr *)&sa, &len1))
{
fprintf(stderr,"get client ip and port failed,exit!\n");
}
printf("ip=%s|埠=%s\n",inet_ntoa(sa.sin_addr),ntohs(sa.sin_port));ip|port
『捌』 Kali Linux常用服務配置教程獲取IP地址
下面以Kali Linux為例,演示獲取IP地址的方法
(1)設置網路介面為自動獲取IP地址。在Kali Linux的收藏夾中單擊圖標,將顯示所有的程序,如圖1.8所示。
(2)單擊「設置」圖標,將打開「設置」窗口,如圖1.9所示。
(3)選擇「網路」選項,單擊有線連接中的齒輪按鈕,將顯示「有線」對話框,如圖1.10所示。
(4)勾選「自動連接」復選框。然後,單擊IPv4標簽,將顯示IPv4選項卡,如圖1.11所示。
(5)在該界面選擇「自動(DHCP)」選項。然後,單擊「應用」按鈕。接下來,就可以請求獲取IP地址了。執行命令如下所示:
root@daxueba:~# dhclient eth0 –d
Internet Systems Consortium DHCP Client 4.3.5
Copyright 2004-2016 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/eth0/00:0c:29:25:89:95
Sending on LPF/eth0/00:0c:29:25:89:95
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
DHCPREQUEST of 192.168.0.12 on eth0 to 255.255.255.255 port 67
DHCPOFFER of 192.168.0.12 from 192.168.0.10
DHCPACK of 192.168.0.12 from 192.168.0.100
bound to 192.168.0.12 -- renewal in 277 seconds.
從輸出的信息中,可以看到成功獲取到IP地址192.168.0.12。由此可以說明,搭建的DHCP服務測試成功。此時,用戶查看地址租約文件dhcpd.leases,也可以看到分配的IP地址。如下所示:
root@daxueba:~# cat /var/lib/dhcp/dhcpd.leases
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.3.5
# authoring-byte-order entry is generated, DO NOT DELETE
authoring-byte-order little-endian;
lease 192.168.0.10 {
starts 1 2018/07/02 10:15:00;
ends 1 2018/07/02 10:25:00;
cltt 1 2018/07/02 10:15:00;
binding state active;
next binding state free;
rewind binding state free;
hardware ethernet 00:0c:29:5c:ae:aa;
client-hostname "daxueba";
}
lease 192.168.0.11 {
starts 1 2018/07/02 10:18:17;
ends 1 2018/07/02 10:28:17;
cltt 1 2018/07/02 10:18:17;
binding state active;
next binding state free;
rewind binding state free;
hardware ethernet 00:0c:29:99:92:4f;
uid "\001\000\014)\231\222O";
set vendor-class-identifier = "MSFT 5.0";
client-hostname "Test";
}
lease 192.168.0.12 {
starts 1 2018/07/02 10:34:56;
ends 1 2018/07/02 10:44:56;
cltt 1 2018/07/02 10:34:56;
binding state active;
next binding state free;
rewind binding state free;
hardware ethernet 00:0c:29:25:89:95;
client-hostname "daxueba";
}
從輸出的信息中,可以看到DHCP服務分配出去的IP地址及對應租約信息。
『玖』 Linux如何獲取IP地址
輸入 ifconfig eth0 ,因為Linux系統裝好後默認網卡是eth0
『拾』 linux C自動獲取區域網可用IP
提供一個思路:
可以用libpcap,先不設置IP,設置網口為混雜模式,抓取一定時間的包,然後統計包裡面沒被使用的IP地址,如果一個IP被使用,必定在網路中會有ARP通信。