背景:写一个bat文件,双击后就可以关闭所有的服务器包括linux服务器和windows服务器
        因为公司有这需求,在下班后要关闭所有的服务器。

公司的服务器包括了windows和linux,若是linux或者全身windows就好办了,可以分别写一个shell脚本和bat脚本就可以执行。但现在要做到一个非专业人员可以进行双击bat文件后进行关机。所以最合理的方法就是一键关闭全部器。

so~~就开始琢磨把这两个脚本打通。

百度之,若要打通bat和shell脚本是要借助第三方工具,网上的工具有cygwin和putty两种,其他的我就不清楚了,我选择了putty来做bat和shell脚本的桥梁。

工具已备好,接下来就是造桥工程。

第一步:规划

在连通bat和shell之前要先把windows和windows之间的关系,linux和linux之间的关系打通。

windows之间用net use 进行连接,linux之间使用ssh进行连接

第二步:打地基

PS:以下所有运行环境都是在超级管理员下运行,省的跳出一些乱七八糟的东西阻碍造桥大计。

windows间可用net use进行测试,查看是否能相连的。

例:net use \\192.168.1.124\ipc$ "123456" /user:"administrator"

net use  \\ip地址\ipc$ "密码"/user:"用户名"

这个密码和用户名都是要连接过去那台机子的密码和用户名的

若出现以下提示就证明连接成功

当然万事都是没有这么顺利的。。。

例如。。。

像这么些乱七八糟的错误基本就是网络不通啊,ip地址有误,用户名密码有误之类造成的。。。

所以得多多利用度娘、谷姐之类的神器进行解决。

或许有时候可能还会用到以下一些命令

net use 来查看哪些是存在的

net use \\192.168.1.210\ipc$ /del 用来删除连接

windows的连接方式就是如此。

在你的客户机上用同样的方法去测试需要加入批量关机大军的windows服务器。

linux间通信使用ssh方式来进行。

先进行配置linux间ssh双机互信机制,这样就可以使两机之间通信不需要输入密码进行访问,将密码全部隐藏起来,这样也起到了安全作用。

关于ssh双机信任机制可以我之前的博客上查看

http://alwaysyunwei.blog.51cto.com/3224143/1222601

第三部:架桥

现在linux机器上写一个shell脚本进行批量关机

其中ip.txt存放要批量关机的linux机器ip

当然shutdown_boot.sh应该像下面这样写,而不是图片中的那样,图片中的内容只是我做测试用的。

#!/bin/sh

for ip in `cat ip.txt`

do

ssh $ip <<EOF

echo "{$ip} shutdown now..."

ifconfig

init 0

EOF

done

ssh 192.168.1.216 -p10088<<EOF

echo "shutdown 192.168.1.216 now...."

ifconfig

init 0

EOF

因为在我的正式环境中216这台机子SSH端口比较特殊,所以单独剥离出来。

桥的一端已搭好,现在搭建另一端,windows下bat脚本来进行windows批量关机

建立一个shutdown.bat文件

写入以下内容

#批量关闭windows机器

net use \\192.168.1.249\ipc$ "12345" /user:"administrator"

shutdown -s -f -t 20 -m \\192.168.1.249

net use \\192.168.1.254\ipc$ "123456" /user:"administrator"

shutdown -s -f -t 20 -m \\192.168.1.254

net use \\192.168.1.210\ipc$ "123456" /user:"administrator"

shutdown -s -f -t 20 -m \\192.168.1.210

桥的另一端也搭好了

最后一步就是把两端连起来

这时候就要请出我们的putty工具

可谷姐、度娘下载一个

第一次要进行手动连接

用这个工具进行连接shell脚本所在的那台机子

填上IP和端口即可。

然后进行连接,会提示输入用户名和密码,登入完后就出现sshhostkeys文件夹

然后把shutdown.bat文件放入到跟这文件夹同级目录下。

在bat文件添加以下内容

#批量关闭linux机器

D:

cd puttyfile_0.62cn

putty.exe -ssh -pw 123456-m test.sh root@192.168.1.241

简单说下这个语法

putty.ext -ssh -pw 密码 -m  要在linux执行的文件 用户名@IP地址

其中test.sh也是放在sshhostkeys同级目录下,里面写上你要向linux执行的命令

#!/bin/sh

cd /opt/script/shell

#mkdir /tmp/test061502

sh shutdown_boot.sh

#mkdir test06170

最终的结果就是以下内容了

shutdown.bat

test.sh

这样就大功告成

第四步:后期工作

按照这个流程可以完成最初的要求,但这样会存在很多的安全问题,密码明码就是一个问题,这个还有待研究看要怎样处理。

另外一个,在这个bat文件中最好加一个时间判断,比如晚上6点后点击执行这个bat文件可以正常运行,其他时间段点击时则出现告警,以防误操作导致关机。

还有其他的等等一些内容需要完善,待以后想到了在 进行补充。

改进一些功能

关于bat文件内容

::批量关闭linux机器

D:

cd puttyfile_0.62cn

PLINK.EXE -ssh -v -pw suselinux root@192.168.1.241 -m test.sh

pause

这样的话就可以看到执行过程

ps:bat文件用::来注释掉行

bat文件升级版=====》》》做时间的判断

当我双机这个shutdown.bat文件后,这bat要自我判断时间是否在18点到24点之间,如果是则执行里面的关机命令,如果不是这个时间段点击这个这个bat文件的话就提示说现在不是关机时间然后退出来

这个是以防万一误操作在上班时间点中了这个文件就蛋疼了。。。。

成型代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
REM Shutdown Windows
set HOUR=%time:~0,2%
if %HOUR% lss 18 (
    echo Bad time to shutdown
    goto :end
)
net use \\192.168.1.249\ipc$ "buguniao" /user:"administrator"
::shutdown -s -f -t 20 -m \\192.168.1.249
net use \\192.168.1.254\ipc$ "dellwindows" /user:"administrator"
::shutdown -s -f -t 20 -m \\192.168.1.254
net use \\192.168.1.210\ipc$ "shangwang" /user:"administrator"
::shutdown -s -f -t 20 -m \\192.168.1.210
net use \\192.168.1.249\ipc$ /del
net use \\192.168.1.254\ipc$ /del
net use \\192.168.1.210\ipc$ /del
REM Shutdown Linux
cd /d D:\puttyfile_0.62cn
PLINK.EXE -ssh -v -pw suselinux root@192.168.1.241 -m test.sh
:end
pause

安全的改进思路如下:
1、在linux服务器上创建一个用户,假设为shutdownlinux,给于关机命令的权限,然后修改该用户的登陆脚本,执行关机或者其它命令。
2、设置putty的无需要密码登陆,保存为shutdownlinux。
3、导出putty的注册表项,假设为shutdown.reg
4、dos的批处理命令如下:
regedit /s shutdownlinux.reg
putty -load shutdownlinux
reg /s delete HKEY_CURRENT_USER\Software\SimonTatham
del *.reg
5、把4个文件(注:一个是putty.exe,一个是注册表文件shutdownlinux.reg,一个是配置putty自动登陆的私钥shutdownlinux.ppk,一个shutdownlinux.bat)做成自解压文件shutdownlinux.exe,设置为解压后运行bat,并且自删除。
6、解释一下批处理原因:首先putty的配置及密钥是放在注册表里的,命令regedit /s shutdownlinux.reg是导入配置和密钥,其次是命令行运行putty自动登陆,里面不含密码,登陆成功那个账号后,会在服务器端运行登陆脚本,这个应该不用解释。最后是删除注册表项和注册表文件。 
7自己实验成功,效果如下:双击exe文件,先弹出一个DOS窗口,然后弹出PUTTY的登陆窗口,然后PUTTY被远程中断退出。

bat putty shell 连携相关推荐

  1. 【putty】html中调起客户端putty

    目录 前提 1. 思路 2. 向windows注册自定义协议 处理程序(脚本) 设脚本处理参数 测试 编写页面 浏览器打开测试 附录: 前提 本地安装好putty 1. 思路 通过自定义协议,从浏览器 ...

  2. 将DOS批处理文件转换为Shell脚本

    相当多的在PC上学习脚本的程序员都在运行DOS. 事实上, 残废的DOS批处理文件语言还是可以编写出一些比较强大的脚本来的, 虽然它们一般都需要借助于外部的工具. 所以说, 某些时候, 我们还是需要将 ...

  3. Windows常用shell命令大全

    From: http://blog.csdn.net/yunzhongfeiniao/article/details/6564577 基于鼠标操作的后果就是OS界面外观发生改变,就得多花学习成本.更主 ...

  4. VBA调用Shell

    文章目录 VBA的Shell函数 函数参数介绍 过程等待 案例-执行Windows的bat文件 案例-mysql查询 案例-执行python脚本 案例-指定应用程序打开文件 AppActivate语句 ...

  5. bat脚本循环操作文件目录(以复制文件为例)

    之前没接触过bat.shell脚本这块的东西,前两天因为工作原因,需要写一个从服务器上拷贝特定的若干文件夹到本地的bat脚本.在网上搜过一些,但是大都感觉都不太好用,最终找到一种方法,相对来说更加简洁 ...

  6. 使用用 bat 脚本启动手机桌面 app

    最近有将手机桌面上的app依次启动.退回到桌面的需求,学习了一波,下面和大家一起分享下.示例手机是小米10青春版. 1. 设计思路 开始想着用app的包名来启动,尝试了后发现太复杂,难以实现按桌面排布 ...

  7. 一名算法工程师,对流量和时代红利的思考

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 2019和2020年,如果说什么最火?多数人第一反应应该就是直播带货.薇娅.李佳琦.辛有志这些带货主播 ...

  8. 本科理工男如何学习Linux

    2019独角兽企业重金招聘Python工程师标准>>> 我是一个本科学电子的理工男,但是一直对计算机感兴趣,所以平时自己在课下喜欢学一些与计算机有关的东西.由于对计算机感兴趣,所以后 ...

  9. windows msys编译64位x264和ffmpeg

    1. 安装msys msys(Minimal GNU system on Windows),是一个小型的GNU环境,包括基本的bash,make等等.与Cygwin差不多吧, 我也没用过cygwin ...

最新文章

  1. NC:你觉得你吃的是草,其实你还是吃的土(遗传发育所朱峰)
  2. [转]解决安装m2eclipse插件后,eclipse启动时在控制台提示的警告
  3. LOJ#510. 「LibreOJ NOI Round #1」北校门外的回忆(线段树)
  4. 变态最大值--nyoj题目811
  5. 基于MATLAB均值漂移图像分割技术
  6. 你所知道及不知道的骗贷、中介、欺诈团伙是怎么样的
  7. .NET Core 项目指定SDK版本
  8. Jetty实战之 安装 运行 部署
  9. webapi实现AJAX多文件上传,AJAX调用webapi上传图片或文件
  10. 在window7 64位下Oracle 10g 数据库中PLSQL Developer配置和使用
  11. is内存地址 id 地址比较 小数据池概念
  12. leetcode-896-单调数列
  13. HTML网页设计:四、超链接
  14. # 保利威视频在线分析下载
  15. 百度 计算广告学学习记录
  16. Github中那些迷之缩写?LGTM?
  17. 【C++ Primer 第五版】序言+前言
  18. oracle 数值加减乘除
  19. 火车头采集器在线发布模块制作教程
  20. Unity-Tilemap 瓦片地图

热门文章

  1. YOLO-V3代码解析系列(六) —— 网络预测(evaluate.py)
  2. Mounty(卷“xxx”不可重新挂载)挂载失败解决方法
  3. ES 之 Routing
  4. 【OpenCV入门教程之十一】 形态学图像处理(二):开运算、闭运算、形态学梯度、顶帽、黑帽合辑
  5. windows 组播收不到消息_只需2步,轻松解决登录微信电脑版后,手机收不到消息提醒的问题...
  6. 广东省计算机ps操作题,PS上机操作练习题
  7. 武汉音乐学院计算机音乐作曲,武汉音乐学院作曲系6部学生作品入围2019年中国大学生计算机设计大赛决赛...
  8. MIPI DSI之DBI DPI含义和区别(3-1)
  9. 新买的电脑网速慢的解决方案
  10. 【HTML】HTML网页设计---海贼王动漫网页设计