脚本编程

百度开放适配&360移动适配专用Sitemap格式转换工具

此工具可将标准版的sitemap.xml转换成电脑版—移动版的对应关系sitemap,用于百度开放适配&360移动适配的文件提交。工具用批处理制作,仅起到批量转换的辅助功效,免去手动制作的麻烦!可以用于移动适配的提交测试!张戈不会php,而shell又不能普遍适用,所以只能挑了自己比较拿手的批处理来制作这个辅助工具!因为批处理的局限性,做出来的工具只能用于尝鲜测试使用!或长期不更新的CMS企业网站来提交移动适配sitemap。另外,响应式站点亦无需提交适配!
阅读全文
脚本编程

Ghost安装Win7/XP后自动恢复IP的批处理

今天维护人员找的我说,最近要推Win7了,暂时桌面云没推广,还是使用手动安装Win7的方式。所以,需要我帮忙写一个脚本,大概功能就是在Ghost Win7之前先导出XP的IP信息,在Ghost完成之后,自动读取这个IP信息用于恢复IP设置。 之前其实写过一个XP的,这次是Win7的,其实大同小异了,花了近半小时测试成功了,现在来记录一下。 懒得去折腾兼容方法,就写了2个导出IP的脚本和一个IP恢复脚本,用于Ghost远程安装Win7后自动恢复IP设置的。(繁体环境) 1、导出WinXP系统IP信息: 2、导出Win7系统IP信息 Ps:测试过程中,发现win7 使用ipconfig命令,会有个IPv6的网关,导致出错,只好用了一个 if 跳出循环。 3、最后输出到D:\ip.txt的格式如下(太偷懒了,就三行,手动写入也很快!): 最后,通过下面这个脚本读取d:\IP.txt内容并恢复IP: 这个脚本简、繁WinXP/7等系统都可以兼容设定IP,其实是修改自我以前写的Windows下获取网络连线实际名称,加强IP类设置脚本的兼容性中的脚本。 4、脚本用法: 1、封装Ghost系统镜像时,将设置IP的脚本加入启动项 2、Ghost安装系统之前先通过【导出脚本】或【手动的方法】在d盘建立ip.txt,写入如上三条信息 3、通过oneKey远程恢复Ghost系统镜像,等恢复完成之后,IP脚本自动恢复D盘设定好的IP,这时就可以远程连接电脑进行维护了,整个过程均不需要现场操作。
阅读全文
菜单式Shell运维脚本调试小记 脚本编程

菜单式Shell运维脚本调试小记

今天上午,同事叫我帮他看下他正在写的脚本到底哪里出了问题,执行总是达不到预期功能。于是ssh连过去看能否发现问题,经过多次Debug定位与排除,问题终于得到解决。   同事在网上down了一个脚本菜单模板,想把我们已经存在的功能脚本整合到一起,做成多功能的Linux运维工具。目前已经添加了挺多功能,而早上才添加的一个抓取高占用CPU的Java线程功能时出现了无法出现交互界面的问题,而单独去执行这个子脚本又是正常的。 我将这个案子拿到手之后,第一件事就是打开了主菜单,分析了一下菜单功能原理和大致结构。通过断点定位法我找到问题出现的位置: 这是主菜单调用子脚本关键代码: 我在子脚本调用的前面加入了 echo $run,用来确定脚本是否运行到了此处、变量内容是否是我们所预期的。 执行后,打印结果如下: 看到第一行后面的 &符号,再打开如下的子菜单查看,立马得出结论:原来是同事编写的子菜单格式兼容性存在问题,他在每个调用子脚本语句后面加了后台运行标识符 &: 有了这个&标识符,调用的脚本将置于后台执行,之所以前15项都能正常,唯独第16项有问题,是因为这项功能存在read交互语句,如第9、13行: 将其置于后台运行,read -p的显示根本都看不到,焉能交互?! 终于抓到了“元凶”,就是置于后台运行的方式存在问题,它不兼容执行中需要交互的脚本。直接在vim中将&批量删除,保存后立竿见影! 正确的写法应该是: 虽然就是这样一个小问题,但是200多行的主菜单脚本,还不是我写的,不仔细分析一下真的很难找到原因!空闲时间,我又回头观赏了一下这个工具菜单逻辑结构,感觉设计的不错,功能的添加非常灵活,值得借鉴,等完善之后,我会在博客记录分享一下!
阅读全文
Shell脚本的简单排错法及调试程序bashdb 脚本编程

Shell脚本的简单排错法及调试程序bashdb

Jboss的研究稍有卡壳,那就来点基础教程好了。 与众多脚本语言一样,Shell脚本在执行时出错是很常见的,最简单的原因无外乎脚本在编写的过程中出现了语法错误或者不小心输错了命令等。找出脚本中的错误是很重要的能力。比如,我经常不小心会把echo命令写成了ehco,那么执行就会出现下面这种情况: 从报错信息很容易判断出错的原因是“命令不存在”。重新编辑这个文件修改成echo就可以解决。如果只是语法或命令上的错误还是比较容易辨别的,但往往一些逻辑或算法错误就不容易发现,因为语法正确且本身不会造成程序运行错误。比如说下面的脚本,本来想连续10次做某些操作的,结果却迟迟没输出。仔细观察一下就知道是陷入了死循环。 如果在上面的循环中加入echo语句,就容易发现问题了。而如果是单次循环过快,根本来不及看就进入了下一次循环,那这时就可以加入sleep命令降低单次循环的速度,比如使用sleep 2,单次循环就将延时2s,给我们带来足够的观察时间: 为了更清晰的看到脚本运行的过程,我们还可以借助-x参数来观察脚本的运行情况。比如上面的脚本,我们使用-x参数执行就可以发现,变量i的值一直在增加,且一直满足x>0的条件,所以这是一个死循环。所以,我们只要将i=i+1修改成i=i-1即可。 Shell本身并没有提供更好的排错工具,为了更加精细地调试Shell脚本,我们可以借助第三方工具bashdb。这是一个类似于GDB的脚本调试软件,小巧而强大,具有这只断点、单步执行、观察变量等功能。下载时请根据所使用的bash版本选择相应的bashdb,否则会提示因为版本不符合而无法安装。 如下查看bash版本: 如下安装: 安装完成后,我们便可以在终端使用bashdb命令了,改命令典型用法如下: 常用参数:
阅读全文
Win平台Web访问白名单设置脚本(IP安全性原则) 脚本编程

Win平台Web访问白名单设置脚本(IP安全性原则)

最近老是有用户申请开通某网站的访问权限,我接手之前浏览权限的设置方法是修改tomcat下的server.xml配置文件,通过定义allow="IP.."的访问规则来控制浏览权限。这种方法有个很不好的地方,每加一次权限,你就得重启一次tomcat,用户老是挤牙膏一样,一次一两个IP的发邮件来申请开通,不但很烦人,而且对正在使用的用户体验也非常的糟糕!于是我决定要改善这个糟糕的局面。 在Linux下,我们都是通过配置防火墙iptables来控制80端口的访问的,结果到了windows下,估计前面的人也没深究如何进行类似的设置,于是就使用了那个蹩脚的方法! 我在接手WEB运维之前,做过一段时间的PC维护,当时公司为了安全考虑需要封堵一些后门端口,我也因此编写过相关的封端口的脚本,所以看到windows平台的WEB防火墙问题,自然而然就想到了通过封堵80端口来控制浏览权限的方法。 在非Server(windows XP/7等)的环境下,要通过命令行来设置IP安全性原则是需要用到一个叫做ipseccmd.exe的命令行工具的,而今天是Windows Server平台,就完全支持使用netsh ipsec static add filter命令来设置IP安全性规则!命令行的用法我也就先不说了,有时间再来补充,直接上代码: 简单说明:此脚本的功能主要是省去了IP安全性原则繁琐的手动设置步骤,直接粘贴IP即可导入白名单!通过3个for循环(可能有点冗余,暂时未考虑优化)将整行多个IP依次分离导入到规则中。这里说的整行的意思是,你只需要将你的IP粘贴进来,不论是单个IP还是IP段,不论是空格隔开还是,逗号隔开,都能实现依次分离导入。 注意事项: 1.由于编写时间很短,所以暂未实现多个C的IP段的判断,若是多个C,比如10.*.*.*/22请拆分为4个段输入(待改进). 2.输入的IP需要使用空格或逗号隔开,不要直接连接在一起,否则就会傻傻分不清楚拉; 3.支持单个IP和IP段的混输,能够判断IP类型来执行不同的语句; 4.默认定义一个C的IP段结尾为0或1,即如果你是192.168.1.1或192.168.1.0,脚本会将其作为相同的IP段处理,也就是直接判断为192.168.1.0/24。 以上脚本为今天下午应急之作,可能存在BUG,仅供参考~若有问题留言请联系,希望能帮到您!
阅读全文
Windows下获取网络连线实际名称,加强IP类设置脚本的兼容性 脚本编程

Windows下获取网络连线实际名称,加强IP类设置脚本的兼容性

在之前的工作中,由于分区域管理,TCP设置有差异,所以编写过很多关于IP切换的脚本,作为大批量电脑维护的脚本,最重要的就是兼容性,可不能就测试的那几台电脑通过了,然后发布给同事使用的时候,出现各种状况! 其中比较难解决的问题就是获取网络连线的实际名称,大部分人使用的IP设置脚本都是将【本地连接】写死在代码中,可实际上并不是所有电脑都叫本地连接;比如有的用户电脑可能升级了网卡驱动,或者更换了网卡,导致网络连线的名称变成“本地连接2”,又比如有无聊好事者(某产线的作业员电脑),将网络连线的名称各种DIY,我就见过一个修改成"操蛋的青春",瞬间无语! 好了,废话不多说,直接上菜! 对于网络连线的实际名称,可能出现的情况有: 1.网卡更换/驱动升级导致名称变更,比如本地连接2 2.系统语系不同导致网络连线名称也不同,比如简体叫【本地连线】,而繁体却叫【區域連線】 3.系统版本不同,导致命令行显示也不同,比如ipconfig/all,简体XP中显示为【Ethernet adapter 本地连接:】,而简体WIN7显示却是【以太网适配器 本地连接:】 4.其他不可预料的问题     那如果要编写一个通用的IP修改脚本,必须就得考虑到以上1-3条的问题,才能提高兼容性,接近版本/简繁语系通吃!(英文版暂未考虑) (PS:以下代码只为说明获取名称,其他一切从简展示): 一、先给出一个XP下简繁体通用的获取连线名称的代码 简单说明:此代码通过ipconfig/all获取连线信息,然后抓取Ethernet adapter之后的名称,即%%k为实际连线名称,理论上简繁体通用。 代码缺点: 1.不兼容WIN7,win7使用ipconfig/all后,得到的是【乙太網路卡 區域連線:】 2.本地超过一块网卡的时候应该会出错(具体未实测) 适用场合:在保证单网卡和XP环境下可用不区分简繁体使用。 二、来个XP/WIN7/简繁体通吃的连线名称获取代码(最近才帮维护人员写的,热乎着呢!): 简单说明:通过netsh获取信息,能兼容XP和WIN7;然后通过【介面】还是【接口】的区分,又能兼容简繁体,所以是通吃代码! 代码缺点:暂未实现多网卡的区分功能,所以双/多网卡电脑执行此脚本,所有网卡均设置成一样的信息,这很蛋疼! 适用范围:只要不存在多网卡,均能使用!多网卡慎用哦~! 三、最后,再给个XP环境下加入了多网卡判断的获取连线名称的脚本吧! Ps:或许有筒子可以参考做出全兼容的脚本呢!(俺时间太紧,就不折腾啦) 简单说明:在代码一的基础上加上了网卡数量的判断,超过一块就提示手动设置,避免因多块网卡设置IP出现问题。 代码缺点: 1.还是未能解决多块网卡自动设置IP的情况,请有兴趣的筒子参考改进哦! 2.无法兼容WIN7 好了,以上就是获取实际网络连线名称的所有代码了,希望能帮到有需要的朋友!
阅读全文