V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
cnkiller
V2EX  ›  问与答

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

  •  
  •   cnkiller · 2014-05-07 18:04:27 +08:00 · 3895 次点击
    这是一个创建于 3845 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题。
    我写了一个脚本,备份一些数据,由于有大约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
    7 条回复    2014-06-18 16:45:24 +08:00
    binux
        1
    binux  
       2014-05-07 18:08:21 +08:00
    /sbin/ifconfig

    or

    PATH=PATH:/sbin
    LazyZhu
        2
    LazyZhu  
       2014-05-07 18:10:26 +08:00
    环境变量问题吧,crontab 的脚本尽量使用全路径。
    cnkiller
        3
    cnkiller  
    OP
       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
        4
    oldnetdog  
       2014-05-08 11:41:53 +08:00
    脚本里面需要加上基础命令的 PATH 才可以的。
    julyclyde
        5
    julyclyde  
       2014-05-11 13:53:04 +08:00
    @cnkiller 那个是错的
    cnkiller
        6
    cnkiller  
    OP
       2014-06-17 22:40:34 +08:00
    @julyclyde 没有错啊。centos5.3测试成功通过了。你说错了,请说明一下错在什么地方了?
    julyclyde
        7
    julyclyde  
       2014-06-18 16:45:24 +08:00
    @cnkiller 配置文件和现实情况不一定同步哦。如果开机之后有人ifconfig或者ip命令更改过,但没记得修改配置文件呢?
    ip addr命令才是正解
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1401 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:45 · PVG 01:45 · LAX 09:45 · JFK 12:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.