/Script

My personal script.

Primary LanguagePython

Script

此项目包含日常使用的脚本.

一、初始化

使用如下命令进行工作环境初始化:

mkdir ~/bin && cd ~/bin
for file in `ls ~/Projects/Script/*`; do; script=`echo $file | awk -F"/" '{ print $NF }'`; ln -s $file $script; done

二、说明文档

auto_login.expect

SSH交互脚本,支持登录测试,执行命令.

$ expect auto_login.expect help
Usage: auto_login.expect [arguments]: 

必须参数:
    o  OPERATE 操作类型,支持run, test和interact三种,必须项
    a  ADDRESS 待处理机器, 支持主机名或IP地址
    d  LOGDIR  日志目录
    u  USER    SSH用户
    p  PORT    SSH端口
    c  SCRIPT  远程执行的脚本
    i  SECRET  SSH用户密钥
    s  SHADOW  SSH用户密码
    t  TIMEOUT 程序内建超时
multiexpect.py

批量SSH交互脚本,基于auto_login.expect.支持登录测试.执行命令以及从模板执行命令.

$ python multiexpect.py -h
usage: multiexpect.py [-h] -o {run,test} [-u USER] [-p PORT] [-d LOGDIR]
                      [-i SECRET] [-s SHADOW] [-r PROCS] [-t TIMEOUT]
                      [-f SCRIPT] [-v VARIABLE]
                      target

必须参数:
  待处理机器列表, 支持主机名或IP地址.

非必须参数:
  -h, --help     显示帮助
  -o {run,test}  操作类型,支持run和test两种,必须项
  -u USER        SSH用户,默认为: root
  -p PORT        SSH端口,默认为: 22
  -d LOGDIR      日志目录,默认为: ~/logging
  -i SECRET      SSH用户密钥,默认为: ~/.ssh/ku_rsa
  -s SHADOW      SSH用户密码,默认为: ~/.ssh/ku_password
  -r PROCS       并发数量,默认为: 250
  -t TIMEOUT     程序内建超时,默认为: 45

run操作必须参数:
  -f SCRIPT      远程执行的脚本或脚本模板
  -v VARIABLE    用于模板生成的变量文件

脚本模板以及变量文件的格式

脚本模板: 用{}作为外部变量的定界符,模板中的{var}会自动按照变量文件中的定义进行替换.同时模板依然支持shell中的$变量

for device in `/sbin/ifconfig -a | awk '/^e/ { print $1 }'`; do
  mac=`ifconfig $device | grep HWaddr | awk '{ print $5 }'` 
  if [ "$device" == "eth0" -o "$device" == "em1" ]; then
    echo "DEVICE=$device"    > /etc/sysconfig/network-scripts/ifcfg-$device
    echo "TYPE=Ethernet"     >> /etc/sysconfig/network-scripts/ifcfg-$device
    echo "BOOTPROTO=static"  >> /etc/sysconfig/network-scripts/ifcfg-$device
    echo "HWADDR=$mac"       >> /etc/sysconfig/network-scripts/ifcfg-$device
    echo "IPADDR={address}"  >> /etc/sysconfig/network-scripts/ifcfg-$device
    echo "NETMASK={netmask}" >> /etc/sysconfig/network-scripts/ifcfg-$device
    echo "GATEWAY={gateway}" >> /etc/sysconfig/network-scripts/ifcfg-$device
    echo "ONBOOT=yes"        >> /etc/sysconfig/network-scripts/ifcfg-$device
  else
    echo "DEVICE=$device"    > /etc/sysconfig/network-scripts/ifcfg-$device
    echo "TYPE=Ethernet"     >> /etc/sysconfig/network-scripts/ifcfg-$device
    echo "HWADDR=$mac"       >> /etc/sysconfig/network-scripts/ifcfg-$device
    echo "ONBOOT=no"        >> /etc/sysconfig/network-scripts/ifcfg-$device
  fi  
done

变量文件: 用|作为key和value的分隔符,用,作为多个变量赋值的分隔符,用=作为变量赋值的分隔符

60.175.193.194|address=61.132.226.195,gateway=61.132.226.254,netmask=255.255.255.192
multichecking.py

联通性测试脚本,支持socket测试以及ping测试.

$ python multichecking.py -h
usage: multichecking.py [-h] -o {ping,socket} [-d LOGDIR] [-b PROCS]
                        [-t TIMEOUT]
                        target

必须参数:
  待测试机器列表, 支持主机名或IP地址.

非必须参数:
  -h, --help        显示帮助
  -o {ping,socket}  测试类型,支持socket和ping两种,必须项
  -d LOGDIR         日志目录,默认为: ~/logging
  -b PROCS          并发数量,默认为: 250
  -t TIMEOUT        程序内建超时,默认为: 10