V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
cnkiller
V2EX  ›  问与答

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

  •  
  •   cnkiller · May 7, 2014 · 4538 views
    This topic created in 4376 days ago, the information mentioned may be changed or developed.
    如题。
    我写了一个脚本,备份一些数据,由于有大约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 replies    2014-06-18 16:45:24 +08:00
    binux
        1
    binux  
       May 7, 2014
    /sbin/ifconfig

    or

    PATH=PATH:/sbin
    LazyZhu
        2
    LazyZhu  
       May 7, 2014
    环境变量问题吧,crontab 的脚本尽量使用全路径。
    cnkiller
        3
    cnkiller  
    OP
       May 7, 2014
    很多都是我ls写的方法。

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

    IP_PATH=/etc/sysconfig/network-scripts/ifcfg-eth0
    IP_PRI=`grep -i ipaddr $IP_PATH|awk -F "=" '{printf $2 }'`
    明天再测试,今天休息
    oldnetdog
        4
    oldnetdog  
       May 8, 2014
    脚本里面需要加上基础命令的 PATH 才可以的。
    julyclyde
        5
    julyclyde  
       May 11, 2014
    @cnkiller 那个是错的
    cnkiller
        6
    cnkiller  
    OP
       Jun 17, 2014
    @julyclyde 没有错啊。centos5.3测试成功通过了。你说错了,请说明一下错在什么地方了?
    julyclyde
        7
    julyclyde  
       Jun 18, 2014
    @cnkiller 配置文件和现实情况不一定同步哦。如果开机之后有人ifconfig或者ip命令更改过,但没记得修改配置文件呢?
    ip addr命令才是正解
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2725 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 66ms · UTC 13:45 · PVG 21:45 · LAX 06:45 · JFK 09:45
    ♥ Do have faith in what you're doing.