中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » 其它操作系统综合讨论区 » 紧急求救,达人们请进!万分感激!
« [1] [2] »
作者:
标题: 紧急求救,达人们请进!万分感激! 上一主题 | 下一主题
outmind
初级用户





积分 52
发帖 22
注册 2006-11-17
状态 离线
『楼 主』:  紧急求救,达人们请进!万分感激!

我手中有几百台WINDOWS服务器,现在需要每个月根据上面的安排重启一次。每台依次重启非常麻烦,想请教各位用什么方法,来下发命令或者重启比较便捷,谢谢!万分感激! 基本需要是能够根据上面下达的时间灵活批量重启所有机器,并且部署起来不需要花太多的时间。谢谢! 有好的方法能提高效率的达人最好加我QQ:9314651 ,再次感谢!

2006-11-29 14:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tianzizhi
高级用户




积分 622
发帖 214
注册 2006-9-22
状态 离线
『第 2 楼』:  

请问一下你的几百台服务器的ip是怎样的,
远程重启用shutdown
    条件为必须为每台机子赋予可以远程重启的权利,在需要远程重启的每台机子上执行下面的操作,
1、单击“开始”按钮,选择“运行”,在对话框中输入“gpedit.msc”,然后单击“确定”,打开“组策略编辑器”。
              2、在“组策略”窗口的左窗格中打开“计算机配置”—“Windows 设置”—“安全设置”—“本地策略”—“用户权利指派”。(如图)

              3、在“组策略”窗口的右窗格中选择“Force shutdown from a remote system
            (从远端系统强制关机)”,双击。
             4、在弹出的对话框中显示目前只有“Administrators”组的成员才有权从远程关机;单击对话框下方的“添加用户或组”按钮,然后在新弹出的对话框中输入“guest”,再单击“确定”。
              5、这时在“从远端系统强制关机”的属性中便添加了一个“guest”用户,单击“确定”即可。
              6、关闭“组策略”窗中。
重启命令为:shutdown -r \\ip /f
时间灵活:用at定时重启.
批量重启所有机器:用for
@echo off
set /p a=请输入要重启的时间:
for /l in %%i (2,1,255) do @(
at %a% shutdown -r \\192.168.0.%%j -f
)
echo ===完成===
pause

   此帖被 +8 点积分     点击查看详情   
评分人:【 redtek 分数: +5  时间:2006-11-30 08:25
评分人:【 lxmxn 分数: +3  时间:2006-12-2 03:55


2006-11-30 01:52
查看资料  发送邮件  发短消息 网志  OICQ (419503077)  编辑帖子  回复  引用回复
outmind
初级用户





积分 52
发帖 22
注册 2006-11-17
状态 离线
『第 3 楼』:  

非常感谢tianzizhi的解答。我的IP是内网的,比如说172.19.64.25,172.19.60.35……
我有几个疑问:一、可否使用读取IP列表的方式呢,如读取IP.txt。二、改成GUEST可以强制关机以后会带来很多安全问题。我所有的机器的用户名和密码是一致的,是否可以通过类似Linux登陆,只询问一次输入用户名和密码的方式来连接重启呢(因为用户名和密码所有机器一致)?  三、或者最简单的方式,一、二合并成一个IP.txt,通过三个字段IP User Passwd 来读取呢?如:172.19.64.25  admin  system

2006-11-30 04:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tianzizhi
高级用户




积分 622
发帖 214
注册 2006-9-22
状态 离线
『第 4 楼』:  

如果不修改组策略,进行连接的话可以用telnet或ipc连接,telnet自动的话有点困难,那就用ipc$来连接.
ip.txt的内容你自己做,内容形式为:
ip passwd user
(注意,密码在中间)
中间用空格格开.
@echo off
set /p a=请输入要重启的时间:
for /f "tokens=1,2,3" %%i in (ip.txt) do @(
net use \\%%i\ipc$ "%%j" \user:"%%k"
start /wait at %a% shutdown -r -t 0 /f
)
echo ===完成===
pause

具体你再改,我也没法测验,有问题你再问.

2006-11-30 06:37
查看资料  发送邮件  发短消息 网志  OICQ (419503077)  编辑帖子  回复  引用回复
outmind
初级用户





积分 52
发帖 22
注册 2006-11-17
状态 离线
『第 5 楼』:  

非常感谢,我已经初步有个想法了,正在测试中……

2006-12-1 04:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tianzizhi
高级用户




积分 622
发帖 214
注册 2006-9-22
状态 离线
『第 6 楼』:  

测试成功后,请把内容贴上来看看!

2006-12-1 06:14
查看资料  发送邮件  发短消息 网志  OICQ (419503077)  编辑帖子  回复  引用回复
outmind
初级用户





积分 52
发帖 22
注册 2006-11-17
状态 离线
『第 7 楼』:  

好的,没有问题,大致思路是你那样,代码略微修改了一些。

2006-12-1 06:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
outmind
初级用户





积分 52
发帖 22
注册 2006-11-17
状态 离线
『第 8 楼』:  

@echo off
set /p a=请输入要重启的时间:
for /f "tokens=1,2,3" %%i in (ip.txt) do @(
net use \\%%i\ipc$ "%%j" /user:"%%k"
at \\%%i %a% shutdown /r /t 30 /f
)
echo ===完成===
pause

测试通过

但是有几个问题:
1.这个没有日志,最好加上日志,把net use  不成功的在屏幕上显示出来并发送到error.txt,把成功的IP发送到success.txt
2.start /wait
这个参数很重要吗?我觉得不是很必要啊?
3.我用
at \\%%i %a% shutdown /r /t 30 /f
测试OK,但是
at %a% shutdown /m \\%%i /r /t 30 /f
就不行,我登陆上执行重启的机器里用at命令查看,任务是在里面的,但是到了时间不执行,为什么呢?

2006-12-1 23:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tianzizhi
高级用户




积分 622
发帖 214
注册 2006-9-22
状态 离线
『第 9 楼』:  

1.加日志
@echo off
set /p a=请输入要重启的时间:
for /f "tokens=1,2,3" %%i in (ip.txt) do @(
net use \\%%i\ipc$ "%%j" /user:"%%k" || goto end
at \\%%i %a% shutdown /r /t 30 /f
echo %%i>>success.txt
:end
net use \\%%i\ipc$ "%%j" /user:"%%k"  2>>error.txt & echo %i>>error.txt
)
echo ===完成===
pause
不知行不行,你试一下.
2.start wait我是随便加上去的,去掉没关系.
3.at %a% shutdown /m \\%%i /r /t 30 /f
语法错误, 也没/m这个选项的,目标机应在at后面.

AT 命令安排在特定日期和时间运行命令和程序。
要使用 AT 命令,计划服务必须已在运行中。
                                                           
AT [\\computername] [ [id] [/DELETE] | /DELETE [/YES]]                    
AT [\\computername] time [/INTERACTIVE]
    [ /EVERY:date[,...] | /NEXT:date[,...]] "command"

\\computername       指定远程计算机。如果省略这个参数,
                     会计划在本地计算机上运行命令。
id                   指定给已计划命令的识别号。
/delete              删除某个已计划的命令。如果省略 id,
                     计算机上所有已计划的命令都会被删除。
/yes                 不需要进一步确认时,跟删除所有作业
                     的命令一起使用。
time                 指定运行命令的时间。
/interactive         允许作业在运行时,与当时登录的用户
                     桌面进行交互。
/every:date[,...]    每个月或每个星期在指定的日期运行命
                     令。如果省略日期,则默认为在每月的
                     本日运行。
/next:date[,...]     指定在下一个指定日期(如,下周四)运
                     行命令。如果省略日期,则默认为在每
                     月的本日运行。
"command"            准备运行的 Windows NT 命令或批处理
                     程序。

[ Last edited by tianzizhi on 2006-12-2 at 12:10 AM ]

2006-12-1 23:59
查看资料  发送邮件  发短消息 网志  OICQ (419503077)  编辑帖子  回复  引用回复
tianzizhi
高级用户




积分 622
发帖 214
注册 2006-9-22
状态 离线
『第 10 楼』:  

把日志的弄好了如下:
@echo off
set /p a=请输入要重启的时间:
for /f "tokens=1,2,3" %%i in (ip.txt) do @(
net use \\%%i\ipc$ "%%j" /user:"%%k" && at \\%%i %a% shutdown /r /t 30 /f && echo %%i>>success.txt
net use \\%%i\ipc$ "%%j" /user:"%%k"  2>>error.txt || echo %%i>>error.txt

)
echo ===完成===
pause

[ Last edited by tianzizhi on 2006-12-2 at 06:56 AM ]

2006-12-2 06:48
查看资料  发送邮件  发短消息 网志  OICQ (419503077)  编辑帖子  回复  引用回复
outmind
初级用户





积分 52
发帖 22
注册 2006-11-17
状态 离线
『第 11 楼』:  

Good,不断优化中……

2006-12-2 07:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 12 楼』:  

tianzizhi 兄,这样不知道行吗?

net use \\%%i\ipc$ "%%j" /user:"%%k" &&( at \\%%i %a% shutdown /r /t 30 /f && echo %%i>>success.txt ) ||(echo %%i>>error.txt)

2006-12-2 08:41
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
tianzizhi
高级用户




积分 622
发帖 214
注册 2006-9-22
状态 离线
『第 13 楼』:  

你要的不显示信息的如下:
@echo off
set /p a=请输入要重启的时间:
echo "正在执行远程批量重启,请稍等>>>>>>"
for /f "tokens=1,2,3" %%i in (ip.txt) do @(
net use \\%%i\ipc$ "%%j" /user:"%%k" >nul 2>nul && at \\%%i %a% shutdown /r /t 30 /f >nul &&

echo %%i>>success.txt >nul 2>nul
net use \\%%i\ipc$ "%%j" /user:"%%k" >nul 2>nul || echo %%i>>error.txt >nul && net use \\%%

i\ipc$ "%%j" /user:"%%k" 2>nul 2>>error.txt

)
echo ===批量重启完成,详细信息请查看日志===
pause

[ Last edited by tianzizhi on 2006-12-2 at 08:53 AM ]

2006-12-2 08:50
查看资料  发送邮件  发短消息 网志  OICQ (419503077)  编辑帖子  回复  引用回复
tianzizhi
高级用户




积分 622
发帖 214
注册 2006-9-22
状态 离线
『第 14 楼』:  



  Quote:
Originally posted by vkill at 2006-12-2 08:41:
tianzizhi 兄,这样不知道行吗?

net use \\%%i\ipc$ "%%j" /user:"%%k" &&( at \\%%i %a% shutdown /r /t 30 /f && echo %%i>>success.txt ) ||(echo % ...

vkill你好,你的代码不行的,遇到一个错误,整个程序就结束了.

2006-12-2 09:02
查看资料  发送邮件  发短消息 网志  OICQ (419503077)  编辑帖子  回复  引用回复
outmind
初级用户





积分 52
发帖 22
注册 2006-11-17
状态 离线
『第 15 楼』:  

程序还是有一些问题,比如说 1.屏蔽错误信息后,如果遇到IPC连接不上的机器,提示符长时间停留在"正在执行远程批量重启,请稍等>>>>>>"这里,是否可以加个超时忽略的功能呢,比如说3秒连接不上就跳到下一个IP,把这个超时IP记日志。
2.还有就是日志信息error.txt有错,显示如下:NET USE
[devicename | *] [\\computername\sharename[\volume] [password | *]]
        [/USER:[domainname\]username]
        [/USER:[dotted domain name\]username]   
        [/USER:[username@dotted domain name]      
        [/SMARTCARD]
        [/SAVECRED]
        [[/DELETE] | [/PERSISTENT:{YES | NO}]]

NET USE {devicename | *} [password | *] /HOME

NET USE [/PERSISTENT:{YES | NO}]


此命令的语法是:

2006-12-4 07:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: