免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 22160 | 回复: 20
打印 上一主题 下一主题

[文本处理] 如何使windows下的bat文件调用linux下的shell脚本的 [复制链接]

论坛徽章:
1
水瓶座
日期:2014-12-25 11:15:10
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-06-14 17:30 |只看该作者 |倒序浏览
背景:写一个bat文件,双击后就可以关闭所有的服务器包括linux服务器和windows服务器
        因为公司有这需求,在下班后要关闭所有的服务器

这是shutdown.bat的范例
试验证明,windows可以关闭

#批量关闭windows机器
net use \\192.168.1.124\ipc$ "123456" /user:"administrator"
shutdown -s -f -t 20 -m \\192.168.1.124

#批量关闭linux机器
....待补充....



这是linux下的批量关linux服务器的脚本
suse-linux:/opt/script/shell # ll
total 8
-rw-r--r-- 1 root root  84 May 22 10:33 ip.txt
-rwxr-xr-x 1 root root 179 May 22 10:34 shutdown_boot.sh
suse-linux:/opt/script/shell # cat shutdown_boot.sh
#!/bin/sh
for ip in `cat ip.txt`
do
        ssh $ip <<EOF
        echo "{$ip} shutdown now..."
        init 0
EOF
done




我现在需要做的是,在bat这个文件下调用linux服务器下的shutdown_boot.sh这个文件。
问题就在这里了,不知要怎样让bat调用shutdown_boot.sh这个文件

请各位大神指点迷津。。。

论坛徽章:
0
2 [报告]
发表于 2013-06-14 17:35 |只看该作者
try cygwin ...

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
3 [报告]
发表于 2013-06-14 18:14 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
4 [报告]
发表于 2013-06-14 21:42 |只看该作者
在BAT里面调用PuTTY的命令行工具plink.exe
它可以登录到Linux里面执行脚本
具体语法你先Google一下
如果搞不定的话我可以帮你写

论坛徽章:
1
水瓶座
日期:2014-12-25 11:15:10
5 [报告]
发表于 2013-06-14 22:47 |只看该作者
好的,谢谢,我先研究下PuTTY回复 4# Shell_HAT


   

论坛徽章:
1
水瓶座
日期:2014-12-25 11:15:10
6 [报告]
发表于 2013-06-17 11:14 |只看该作者
本帖最后由 水底游 于 2013-06-17 11:22 编辑

按照你的思路,我用putty做了BAT文件调用linux下的shell 脚本,但还是有点问题
bat文件内容
D:
cd puttyfile_0.62cn
putty.exe -ssh -pw suselinux  -m test.sh root@192.168.1.241


本地test.sh内容
#!/bin/sh

cd /opt/script/shell
mkdir /tmp/test061502
sh /shutdown_boot.sh
mkdir test06170

把这个bat文件和test.sh文件放到跟putty.exe文件同一目录下。

然后运行bat文件

得到的结果是 两个mkdir命令可以正常运行,shutdown_boot.sh这个文件在linux系统下没有被调用到

这是什么原因的




PS:为毛UC上传不了图的,不然用图片更加直观




回复 4# Shell_HAT


   

论坛徽章:
1
水瓶座
日期:2014-12-25 11:15:10
7 [报告]
发表于 2013-06-17 11:31 |只看该作者
行了,原来是我的本地写的有问题
应该是这样写的
sh shutdown_boot.sh

而不是这样
sh /shutdown_boot.sh


不过还有个问题想请教下
问题一:怎样能做到安全性
        现在密码都是明文的

问题二:怎样做到运行bat文件时,可以看到运行过程
        现在点击bat文件后,都是一闪而过的,然后就消失掉。

期待您的回复,谢谢。


回复 4# Shell_HAT


   

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
8 [报告]
发表于 2013-06-17 13:11 |只看该作者
回复 7# 水底游
  1. cd /d "D:\puttyfile_0.62cn"
  2. putty.exe -ssh -pw suselinux  -m test.sh root@192.168.1.241
  3. pause
复制代码
你试试这样能否看到执行过程

论坛徽章:
1
水瓶座
日期:2014-12-25 11:15:10
9 [报告]
发表于 2013-06-17 13:49 |只看该作者
本帖最后由 水底游 于 2013-06-17 13:52 编辑

不行,还是一样
运行的时候出现两个窗口,一个是cmd窗口,一个是putty窗口,
cmd窗口现在可以在执行完还停留在那里,但putty窗口还是一闪而过
然后有关test.sh的命令在putty窗口显示的,然后当test.sh一跑完就没了,也是闪的比较快的。

shutdown.bat
  1. #批量关闭windows机器

  2. net use \\192.168.1.249\ipc$ "buguniao" /user:"administrator"
  3. shutdown -s -f -t 20 -m \\192.168.1.249

  4. net use \\192.168.1.254\ipc$ "dellwindows" /user:"administrator"
  5. shutdown -s -f -t 20 -m \\192.168.1.254

  6. net use \\192.168.1.210\ipc$ "shangwang" /user:"administrator"
  7. shutdown -s -f -t 20 -m \\192.168.1.210

  8. net use \\192.168.1.249\ipc$ /del
  9. net use \\192.168.1.254\ipc$ /del
  10. net use \\192.168.1.210\ipc$ /del


  11. #批量关闭linux机器

  12. D:
  13. cd puttyfile_0.62cn
  14. putty.exe -ssh -pw suselinux  -m test.sh root@192.168.1.241

  15. pause
复制代码
test.sh
  1. #!/bin/sh

  2. cd /opt/script/shell
  3. #mkdir /tmp/test061502
  4. sh shutdown_boot.sh
  5. #mkdir test06170
复制代码
还有一个问题,bat里面注释是用什么符号的?好像不是用“#”这个符号的

上传图片一直失败。。。



回复 8# Shell_HAT


   

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
10 [报告]
发表于 2013-06-17 14:01 |只看该作者
回复 9# 水底游


试试plink命令:
  1. PLINK.EXE -ssh -v -pw suselinux root@192.168.1.241 -m test.sh
复制代码
注释是:
rem
或者:
::
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP