Linux Shell 编写获取本地 IP 的问题,只有手工执行才有,crontab 没有

2014-05-07 18:04:27 +08:00
 cnkiller
如题。
我写了一个脚本,备份一些数据,由于有大约80台服务器,为了区分来自不同的服务器,我把备份文件名设置为本地的IP地址。

在网上找了这个
ifconfig -a | grep 'inet ' | cut -d ':' -f 2 |cut -d ' ' -f 1 | grep -v '^127'
ifconfig eth0| grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "
等命令,在测试时确实可以获取到ip并设置成文件名,但当我添加成为ctrontab后,执行脚本就没有IP
文件名生产部分如下

IPadd=`ifconfig -a | grep 'inet ' | cut -d ':' -f 2 |cut -d ' ' -f 1 | grep -v '^127' `

BakName=back_${IPadd}_$(date +%Y%m%d_%H%M%S).tar.gz
3902 次点击
所在节点    问与答
7 条回复
binux
2014-05-07 18:08:21 +08:00
/sbin/ifconfig

or

PATH=PATH:/sbin
LazyZhu
2014-05-07 18:10:26 +08:00
环境变量问题吧,crontab 的脚本尽量使用全路径。
cnkiller
2014-05-07 18:17:57 +08:00
很多都是我ls写的方法。

找到了一个读取文件的方法,解决。

IP_PATH=/etc/sysconfig/network-scripts/ifcfg-eth0
IP_PRI=`grep -i ipaddr $IP_PATH|awk -F "=" '{printf $2 }'`
明天再测试,今天休息
oldnetdog
2014-05-08 11:41:53 +08:00
脚本里面需要加上基础命令的 PATH 才可以的。
julyclyde
2014-05-11 13:53:04 +08:00
@cnkiller 那个是错的
cnkiller
2014-06-17 22:40:34 +08:00
@julyclyde 没有错啊。centos5.3测试成功通过了。你说错了,请说明一下错在什么地方了?
julyclyde
2014-06-18 16:45:24 +08:00
@cnkiller 配置文件和现实情况不一定同步哦。如果开机之后有人ifconfig或者ip命令更改过,但没记得修改配置文件呢?
ip addr命令才是正解

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/111524

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX