html文件批量更新,批量更新小文件(版本控制)

环境需求: 本人工作环境中存在上千多台服务器,自己负责几十台每台上又分一些应用,所存在很多管理脚本、监控脚本、控制脚本等,如果自己需要升级就比较麻烦了,要发一个公告谁用了我这个脚本,要在哪里哪里拿然后怎么怎么更新(相对于项目应用、打文件是有一套更新系统的),所以为了方便自己的管理,做了一个小的版本控制程序,有:文件分发功能、文件升级功能。

可能会问,现在有很多同步的工具啊简单的例如rsync等。就拿这个rsync来说,又要做服务端配置,又要做客户端配置。这有麻烦了,我现在做的是只在服务端进行信息的录入,服务端不用进行任何配置。

简单流程是:

将要更新的文件拷到服务端相应的目录->更改好文件的相应权限(因为到客户端也要保证同样的权限)->录入相关信息(要分发和同步的客户端ip,要把文件放置客户端的那个目录,定义的文件名字)

核心代码:

#!/usr/bin/python

#Edited by Sky bin /Ashely 2010.01.22

import pexpect

import string

import os

import time

import sys

T=time.time()

timeout=30

username="sky"

passwd=""

ip=""

filename=""

filepath=""

def handle(username,passwd,ip):

shell_cmd='ssh

child = pexpect.spawn(shell_cmd,timeout=timeout)

idx=child.expect(['password:','continue connecting(yes/no)?'])

if idx==0:

child.sendline('&10acypt')

child.expect('$')

child.sendline('su -')

child.expect("Password:")

child.sendline(passwd)

child.expect('#')

child.sendline('cd '+filepath)

child.expect('#')

child.sendline('mv -f /home/support/'+filename+' '+filepath)

child.expect('#')

elif idx==1:

child.sendline('yes')

child.close()

handle(username,passwd,ip)

child.close()

def handle_scp(ip,filename,usernaem):

scp_cmd="scp src_file/"+filename+" +":."

child = pexpect.spawn(scp_cmd)

child.expect('.ssword:*')

child.sendline('sky')#发送密码

#child.interact()

child.expect(pexpect.EOF)

child.close()

def get_passwd(passwd,tap):

这个是本人的root的密码转换规则这里就不贴出来了

try:

if len(sys.argv)<5:

print 'please input parameter:ip filename filepath passwd IP_tap'

exit

else:

ip=sys.argv[1]

filename=sys.argv[2]

filepath=sys.argv[3]

passwd=get_passwd(sys.argv[4],sys.argv[5])

handle_scp(ip,filename,username)

handle(username,passwd,ip)

except pexpect.EOF:

print 'error'

print '%d seconds'% int(time.time()-T)

shell调用该python的脚本代码:

#!/bin/bash

#Edited by Sky bin /Ashely 2010.01.22

LIST="list"

time_inter=5

des=""

i=0

find src_file/ -ctime -$time_inter | awk 'BEGIN { FS="/"} {if ($2!="") print $2}' | \

while read filename

do

i=$(($i+1))

if [ $i -lt 2 ] ; then

des="$filename"

echo $des > /tmp/.filename

else

des="$des|$filename"

echo $des > /tmp/.filename

fi

done

if [[ -e /tmp/.filename ]] ; then

des=`cat /tmp/.filename`

rm -f /tmp/.filename

grep -E $des list | awk '{print  $1,$2,$3}'| \

while read filepath filename ip

do

passwd=`echo $ip | awk 'BEGIN { FS="."} {print $4}'`

IP_tap=`echo $ip | awk 'BEGIN { FS="."} {print $3}'`

/usr/bin/python ssh.py $ip $filename $filepath $passwd $IP_tap

done

fi

信息录入代码:

#!/bin/bash

#Edited by Sky bin /Ashely 2010.01.22

. add_file.sh

. scan.sh

. del_file.sh

export LANG=zh_CN.gb18030

ROOT="`update.sh"

MENU="`menu_dir/menu"

MENU2="menu_dir/menu2"

#echo $ROOT

export PS3="[Update Tool Server Mode]:"

select item in `awk -F: '{print $1}' $MENU`

do

if [ $item == "EXIT" ] ; then

break

elif [ $item == "FILE_INFORMATION" ] ; then

select itemt in `awk -F: '{print $1}' $MENU2`

do

if [ $itemt == "EXIT" ] ; then

exit

elif [ $itemt == "BACK" ] ; then

break

elif [ $itemt == "ADD_FILE_INFO" ] ; then

add_file

elif [ $itemt == "SCAN" ] ; then

scan

elif [ $itemt == "DEL_FILE_INFO" ] ; then

del_file

fi

done

fi

done

function add_file(){

echo "Please input your Client File_Path_Server filename and IP"

read  serverfilename filename ip

servertap=`expr length "$serverfilename"`

filetap=`expr length "$filename"`

iptap=`expr length "$ip"`

if [[ $servertap -gt 1 && $filetap -gt 1 && $iptap -gt 1 ]] ; then

tap="$(echo $ip | grep -c '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')"

if [ "$tap" = "0" ] ; then

echo "你的输入是非法的IP格式"

else

tap=`grep "$serverfilename $filename $ip" list`

tapnum=`expr length "$tap"`

if [[ $tapnum -lt 1 ]] ; then

if echo "$serverfilename $filename $ip">> list 2> /dev/null ;then

echo "Your file infomation has been added!"

else

echo "Input wrong!"

fi

else

echo "The information already exist"

fi

fi

else

echo "You miss something infomation!"

fi

}

function del_file()

{

select itemth in `cat $LIST | sed "s/ /---/g"`

do

del_str=`echo $itemth | sed "s/---/ /g"`

sed -i "/$del_str/d" $LIST

echo "Deleted the information in list!"

break

done

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值