话说昨天采集了用户的系统和软件信息,今天用虚拟机还原了一个,但是失败了,bug没有重现~

过程还是挺费功夫的:
首先用户用的番茄花园xp sp2, 虚拟机里用迅雷秒杀了,超赞公司网速~
Virtualbox里系统装好,下面就是比较头疼的,按照补丁列表打补丁…

hualu@lu-hua:patch$ cat /tmp/allsofts.txt | grep -E "\(KB[0-9]{6}" | sed -e 's/.*(\(KB[^)]*\).*/\1/' | wc -l
138
Copy Code 

软件列表里一共有138个补丁, 对着列表在360卫士里挨个找着选的话估计我这老眼就废了…

还是自己写脚本去微软下载

#!/bin/sh
 
ID="$1"
if [ ! -n "$ID" ];then
    exit
fi
echo '-----------------------------------'
BASEURL='http://www.microsoft.com'
 
get_first_link()
{
   cat "$1" | grep "Windows XP" | grep "<a" | sed -e 's/.*href="\([^"]*\)".*/\1/' \
       -e 's/.*;u=//' \
       -e 's/%2f/\//g' \
       -e 's/%3f/\?/g' \
       -e 's/%3d/\=/g'
}
 
get_second_link()
{
    cat "$1" | grep 'id="quickCheck"' | sed -e "s/.*window\.open('\([^']*\)',.*/\1/"
}
 
url="${BASEURL}/downloads/results.aspx?pocId=7&freetext=${ID}&DisplayLang=zh-cn"
echo "${url}"
 
wget "${url}" -q -O /tmp/get_ms_link
 
surl="`get_first_link /tmp/get_ms_link`"
 
if [ ! -n "${surl}" ];then
    echo "${ID}补丁不存在"
    echo "${ID}" >> ./patch_not_found.txt
    exit
fi
 
surl="${BASEURL}${surl}"
echo "${surl}"
 
wget "${surl}" -q -O /tmp/get_ms_link
turl="`get_second_link /tmp/get_ms_link`"
echo "${turl}"
if [ ! -n "${turl}" ];then
    echo "${ID}补丁不存在"
    echo "${ID}" >> ./patch_not_found.txt
    exit
fi
 
wget "${turl}"
 
echo '-----------------------------------'
Copy Code 

不知道微软有没有专门的补丁下载入口,不过我还是模仿我知道的方法下载了,先搜索,然后结果里找,使用:sh get_ms_patch.sh KB975467

然后几个老套的命令

#取出所有补丁编号
cat allsofts.txt | grep -E "\(KB[0-9]{6}" | sed -e 's/.*(\(KB[^)]*\).*/\1/' > /tmp/allpatch.txt
#下载所有补丁
cat /tmp/allpatch.txt | xargs -i sh /home/hualu/bin/get_ms_update.sh "{}"
#生成批量安装补丁的批处理文件
find ./ -name "*.exe" | sort | xargs -i basename {} | xargs -i echo ".\{} /passive /norestart" >> install.bat
Copy Code 

回到虚拟xp里,挂在网络驱动,双击install.bat,开始安装… 等我吃完午饭,补丁都装完了,灰常激动,立刻重启,打开ie,登录淫淫,进入个人主页, fuck, 没有脚本错误!!!!

估计今天我嘴上的泡就是因为这个起的,真上火… , 后面,我接着按照软件列表装了瑞星,offcie 2007,均没有看到我期待的脚本错误

看来我得研究星座了…