返回列表 发帖

史上最强bash函数库

两年系统运维工作中积累下来的, 呵
多为系统操作相关,如

取内网地址: get_localip()
取内网网口: get_local_iface()
取网关的IP:  get_gateway_ip()
添加一个cron作业: add_cron()
删除一个cron作业: del_cron()
取内存大小: get_mem_size()
取硬盘大小: get_hdd_size()
查找非系统默认帐号:find_non_sys_user()
.........

使用方法:
将func-common.sh和主脚本放在同一个目录下
在主脚本中source函数库后直调用, 函数参数见注释说明
  1. export WORKDIR=$( cd ` dirname $0 ` && pwd )

  2. if [[ ! -r "$WORKDIR/func-common.sh" ]]; then
  3.     echo "[$WORKDIR/func-common.sh] NOT FOUND"
  4.     exit 1
  5. fi

  6. . "$WORKDIR/func-common.sh" || exit 1
复制代码
代码存于google svn中, 会不定期更新
http://huan.googlecode.com/svn/bash/func-common.sh
面包会有的 女人也会有的
_______________________

好东西阿, 我顶!~
1

评分人数

  • admin

TOP

get_loginip()
{
    local ip

    for ip in $( echo $SSH2_CLIENT    | awk '{ print $3 }' ) \
              $( echo $SSH_CONNECTION | awk '{ print $3 }' ) \
              $( echo $SSH_CLIENT     | awk '{ print $1 }' ) ; do
        if [[ -n $ip ]]; then  ## never failed ?
            echo $ip
            return 0
        fi
    done

    return 1
}
是要取当前ssh连接的ip吗?好像不对吧。这个函数顺序检查$SSH2_CLIENT ,$SSH_CONNECTION,$SSH_CLIENT 这3个环境变量设定,返回第一个非空环境变量的部分值。
怎么也不能查询到当前连接啊!
1

评分人数

  • admin

TOP

get_loginip() 确实是取ssh登录上来的IP
当不是从ssh登录, 这个函数当然是返回失败

实际上, 这个函数基本上只在get_localip()中被调用, 注释中已经写明了

get_localip()为什么需要调用get_loginip() 取值而非直接使用ifconfig呢?
因为当你有多个内网IP/多个内网网卡时, 在对一个iplist做批量操作后
你很可能需要打印出一行这样的标志以便grep出结果: echo    $IP   OPOK
而如果$IP不是你的登录IP时, 那就会造成统计上的困难
所以, 把loginip做为localip, 是个选择

(当然如果从外网ssh,那就需要屏蔽get_localip上的检查了)
面包会有的 女人也会有的
_______________________

TOP

返回列表