Linux如何自动获取IP地址

Linux如何自动获取IP地址,第1张

第一步:激活网卡 系统装好后默认的网卡是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=eth0IPADDR=1921681100NETMASK=2552552550GATEWAY=19216811DNS=8888BOOTPROTO=staticONBOOT=yesdebian: 编辑/etc/network/interfaces# The loopback network interfaceauto loiface lo inet loopback# The primary network interfaceallow-hotplug eth0auto eth0iface eth0 inet staticaddress 192168136netmask 2552552550gateway 192168110 #公司的网关是192168110,一般是19216811保存编辑结果,并重启网络服务

一、查看命令

1启动 linux *** 作系统,进入到桌面。

2启动终端。

3在终端键入命令 ifconfig eth0,回车。如下图所示:

二、信息解读

第一行说明了网卡类型和MAC地址。

第二行说明了IPV4地址,广播地址和子网掩码。

第三行说明了IPV6地址。

第五行说明了接收的数据包总数,以及错误的包数、丢失的数据包数。

第六行与第五行相对应,分别是发送的数据包总数,以及错误的包数、丢失的数据包数。

第八行则分别是接收和发送的字节数。

首先确认所使用的网络支持ipv6,装载的Linux系统支持ipv6

网络设置里设置ipv6为“自动-DHCP”模式

根据得到的ipv6地址(2001::打头的是公用,fe80::是本机私有)

ping6 ipv6googlecom

ping通,就可以访问ipv6网站了。不然使用如下步骤

[plain] view plain copy

sudo dhclient -6 -r //释放ipv6地址

sudo dhclient -6 //重新获取ipv6地址

sudo service networking restart //重启网络服务

[plain] view plain copy

不知道为什么在另外一台机器上,上述命令不行,不过可以先设置Ipv6的地址获取方式为忽略,然后sudo dhclient -6手动获取ipv6地址,这样也可以使用了

asctime(将时间和日期以字符串格式表示)

相关函数

time,ctime,gmtime,localtime

表头文件

#include<timeh>

定义函数

char asctime(const struct tm timeptr);

函数说明

asctime()将参数timeptr所指的tm结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。此函数已经由时区转换成当地时间,字符串格式为:“Wed Jun 30 21:49:08 1993\n”

返回值

若再调用相关的时间日期函数,此字符串可能会被破坏。此函数与ctime不同处在于传入的参数是不同的结构。

附加说明

返回一字符串表示目前当地的时间日期。

范例

#include <timeh>

main()

{

time_t timep;

time (&timep);

printf(“%s”,asctime(gmtime(&timep)));

}

执行

Sat Oct 28 02:10:06 2000

ctime(将时间和日期以字符串格式表示)

相关函数

time,asctime,gmtime,localtime

表头文件

#include<timeh>

定义函数

char ctime(const time_t timep);

函数说明

ctime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。此函数已经由时区转换成当地时间,字符串格式为“Wed Jun 30 21 :49 :08 1993\n”。若再调用相关的时间日期函数,此字符串可能会被破坏。

返回值

返回一字符串表示目前当地的时间日期。

范例

#include<timeh>

main()

{

time_t timep;

time (&timep);

printf(“%s”,ctime(&timep));

}

执行

Sat Oct 28 10 : 12 : 05 2000

gettimeofday(取得目前的时间)

相关函数

time,ctime,ftime,settimeofday

表头文件

#include <sys/timeh>

#include <unistdh>

定义函数

int gettimeofday ( struct timeval tv , struct timezone tz )

函数说明

gettimeofday()会把目前的时间有tv所指的结构返回,当地时区的信息则放到tz所指的结构中。

timeval结构定义为:

struct timeval{

long tv_sec; /秒/

long tv_usec; /微秒/

};

timezone 结构定义为:

struct timezone{

int tz_minuteswest; /和Greenwich 时间差了多少分钟/

int tz_dsttime; /日光节约时间的状态/

};

上述两个结构都定义在/usr/include/sys/timeh。tz_dsttime 所代表的状态如下

DST_NONE /不使用/

DST_USA /美国/

DST_AUST /澳洲/

DST_WET /西欧/

DST_MET /中欧/

DST_EET /东欧/

DST_CAN /加拿大/

DST_GB /大不列颠/

DST_RUM /罗马尼亚/

DST_TUR /土耳其/

DST_AUSTALT /澳洲(1986年以后)/

返回值

成功则返回0,失败返回-1,错误代码存于errno。附加说明EFAULT指针tv和tz所指的内存空间超出存取权限。

范例

#include<sys/timeh>

#include<unistdh>

main(){

struct timeval tv;

struct timezone tz;

gettimeofday (&tv , &tz);

printf(“tv_sec; %d\n”, tv,tv_sec) ;

printf(“tv_usec; %d\n”,tvtv_usec);

printf(“tz_minuteswest; %d\n”, tztz_minuteswest);

printf(“tz_dsttime, %d\n”,tztz_dsttime);

}

执行

tv_sec: 974857339

tv_usec:136996

tz_minuteswest:-540

tz_dsttime:0

gmtime(取得目前时间和日期)

相关函数

time,asctime,ctime,localtime

表头文件

#include<timeh>

定义函数

struct tmgmtime(const time_ttimep);

函数说明

gmtime()将参数timep 所指的time_t 结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。

结构tm的定义为

struct tm

{

int tm_sec;

int tm_min;

int tm_hour;

int tm_mday;

int tm_mon;

int tm_year;

int tm_wday;

int tm_yday;

int tm_isdst;

};

int tm_sec 代表目前秒数,正常范围为0-59,但允许至61秒

int tm_min 代表目前分数,范围0-59

int tm_hour 从午夜算起的时数,范围为0-23

int tm_mday 目前月份的日数,范围01-31

int tm_mon 代表目前月份,从一月算起,范围从0-11

int tm_year 从1900 年算起至今的年数

int tm_wday 一星期的日数,从星期一算起,范围为0-6

int tm_yday 从今年1月1日算起至今的天数,范围为0-365

int tm_isdst 日光节约时间的旗标

此函数返回的时间日期未经时区转换,而是UTC时间。

返回值

返回结构tm代表目前UTC 时间

范例

#include <timeh>

main(){

char wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};

time_t timep;

struct tm p;

time(&timep);

p=gmtime(&timep);

printf(“%d%d%d”,(1900+p->tm_year), (1+p->tm_mon),p->tm_mday);

printf(“%s%d;%d;%d\n”, wday[p->tm_wday], p->tm_hour, p->tm_min, p->tm_sec);

}

执行

2000/10/28 Sat 8:15:38

localtime(取得当地目前时间和日期)

相关函数

time, asctime, ctime, gmtime

表头文件

#include<timeh>

定义函数

struct tm localtime(const time_t timep);

函数说明

localtime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。结构tm的定义请参考gmtime()。此函数返回的时间日期已经转换成当地时区。

返回值

返回结构tm代表目前的当地时间。

范例

#include<timeh>

main(){

char wday[]={“Sun”,”Mon”,”Tue”,”Wed”,”Thu”,”Fri”,”Sat”};

time_t timep;

struct tm p;

time(&timep);

p=localtime(&timep); /取得当地时间/

printf (“%d%d%d ”, (1900+p->tm_year),( l+p->tm_mon), p->tm_mday);

printf(“%s%d:%d:%d\n”, wday[p->tm_wday],p->tm_hour, p->tm_min, p->tm_sec);

}

执行

2000/10/28 Sat 11:12:22

mktime(将时间结构数据转换成经过的秒数)

相关函数

time,asctime,gmtime,localtime

表头文件

#include<timeh>

定义函数

time_t mktime(strcut tm timeptr);

函数说明

mktime()用来将参数timeptr所指的tm结构数据转换成从公元1970年1月1日0时0分0 秒算起至今的UTC时间所经过的秒数。

返回值

返回经过的秒数。

范例

/ 用time()取得时间(秒数),利用localtime()

转换成struct tm 再利用mktine()将struct tm转换成原来的秒数/

#include<timeh>

main()

{

time_t timep;

strcut tm p;

time(&timep);

printf(“time() : %d \n”,timep);

p=localtime(&timep);

timep = mktime(p);

printf(“time()->localtime()->mktime():%d\n”,timep);

}

执行

time():974943297

time()->localtime()->mktime():974943297

settimeofday(设置目前时间)

相关函数

time,ctime,ftime,gettimeofday

表头文件

#include<sys/timeh>

#include<unistdh>

定义函数

int settimeofday ( const struct timeval tv,const struct timezone tz);

函数说明

settimeofday()会把目前时间设成由tv所指的结构信息,当地时区信息则设成tz所指的结构。详细的说明请参考gettimeofday()。注意,只有root权限才能使用此函数修改时间。

返回值

成功则返回0,失败返回-1,错误代码存于errno。

错误代码

EPERM 并非由root权限调用settimeofday(),权限不够。

EINVAL 时区或某个数据是不正确的,无法正确设置时间。

time(取得目前的时间)

相关函数

ctime,ftime,gettimeofday

表头文件

#include<timeh>

定义函数

time_t time(time_t t);

函数说明

此函数会返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数。如果t 并非空指针的话,此函数也会将返回值存到t指针所指的内存。

返回值

成功则返回秒数,失败则返回((time_t)-1)值,错误原因存于errno中。

范例

#include<timeh>

mian()

{

int seconds= time((time_t)NULL);

printf(“%d\n”,seconds);

}

这篇文章主要介绍了Linux系统中获取路径的文件名的方法,文中总结出了两条,需要的朋友可以参考下

代码如下:

[root@dabuinfo

]#basename

/root/aaa/bbb/dabutxt

显示:

代码如下:

dabutxt

#获取路径的文件名

shell脚本中如何获得脚本文件所在路径

方法一:

代码如下:

[root@dabuinfo

]#DIR=$(cd

"$(dirname

"$0")";

pwd)

[root@dabuinfo

]#echo

$DIR

但是像这种dirname

"$0"这种写法,在遇到source命令时会得到错误的结果。

方法二:

代码如下:

[root@dabuinfo

]#echo

"$(

cd

"$(

dirname

"${BASH_SOURCE[0]}"

)"

&&

pwd

)"

上面一行命令可以获得脚本的绝对轮径,无论你在何处调用这个脚本。

但是如果含有软链接,就无法使用了。所以,我们为了能正确解析指向脚本的软链接,可以使用下面的多行命令:

代码如下:

SOURCE="${BASH_SOURCE[0]}"

while

[

-h

"$SOURCE"

];

do

#

resolve

$SOURCE

until

the

file

is

no

longer

a

symlink

DIR="$(

cd

-P

"$(

dirname

"$SOURCE"

)"

&&

pwd

)"

SOURCE="$(readlink

"$SOURCE")"

[[

$SOURCE

!=

/

]]

&&

SOURCE="$DIR/$SOURCE"

#

if

$SOURCE

was

a

relative

symlink,

we

need

to

resolve

it

relative

to

the

path

where

the

symlink

file

was

located

done

DIR="$(

cd

-P

"$(

dirname

"$SOURCE"

)"

&&

pwd

)"

也可与source,bash

-c命令使用

但是,如果你在脚本中使用先cd切换到其他目录,在运行时上面的命令片段时,则上面的命令不能等到正确的结果。可以参考关于$CDPATH

陷阱的文章。想理解它如何其作用的,可以运行下面的代码:

代码如下:

#!/bin/bash

SOURCE="${BASH_SOURCE[0]}"

while

[

-h

"$SOURCE"

];

do

#

resolve

$SOURCE

until

the

file

is

no

longer

a

symlink

TARGET="$(readlink

"$SOURCE")"

if

[[

$SOURCE

==

/

]];

then

echo

"SOURCE

'$SOURCE'

is

an

absolute

symlink

to

'$TARGET'"

SOURCE="$TARGET"

else

DIR="$(

dirname

"$SOURCE"

)"

echo

"SOURCE

'$SOURCE'

is

a

relative

symlink

to

'$TARGET'

(relative

to

'$DIR')"

SOURCE="$DIR/$TARGET"

#

if

$SOURCE

was

a

relative

symlink,

we

need

to

resolve

it

relative

to

the

path

where

the

symlink

file

was

located

fi

done

echo

"SOURCE

is

'$SOURCE'"

RDIR="$(

dirname

"$SOURCE"

)"

DIR="$(

cd

-P

"$(

dirname

"$SOURCE"

)"

&&

pwd

)"

if

[

"$DIR"

!=

"$RDIR"

];

then

echo

"DIR

'$RDIR'

resolves

to

'$DIR'"

fi

echo

"DIR

is

'$DIR'"

linux C中,获取当前进程id 函数为getpid() ;

头文件:#include <unistdh>

函数原型:pid_t getpid(void);

函数说明:getpid ()用来取得目前进程的进程id,许多程序利用取到的此值来建立临时文件, 以避免临时文件相同带来的问题。

返回值:目前进程的进程id

范例

#include <stdioh>

#include <unistdh>

main()

{

    printf("pid=%d\n", getpid());

}

执行:

pid=1494 /每次执行结果都不一定相同 /

以上就是关于Linux如何自动获取IP地址全部的内容,包括:Linux如何自动获取IP地址、如何在linux中获取网卡信息、如何在Linux下获取IPv6地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9334683.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存