在测试环境中由于需要测试不同时间段的活动,经常需要修改服务器及数据库的时间,为减少运维工作量,只需要在一个地方修改时间即可修改所有测试服务器的时间。我们公司主要采用C#+MySQL,因此涉及到Windows和Linux。再此分享一个同步时间方案:

1.Windows时间修改

比如你站点的名字为time.abc.com应用程序池的名称也为time.abc.com

打开组策略,增加服务器权限

测试环境修改Linux及Windows服务器时间方案_第1张图片增加iis apppool\time.abc.com用户即可



2.Linux时间修改


我们通过web来调整服务器时间,web同样采用c#来编写,c#主要就是调用批处理,然后传入参数即可

批处理文件:

@echo off
date %1
time %2
echo sudo /bin/date -s "%1 %2" >E:\tmp\set.log
E:\scripts\putty.exe -pw password -m E:\tmp\set.log [email protected]
exit

第一个参数就是年/月/日   如:2017/05/18

第二个参数就是时:分:秒    如:10:04:00

说明下putty命令行的用法:

-pw  登录密码

-m 是执行本地文件的内容,而非Linux远程文件


我们在Linux上创建time用户,同时然time用户具有修改时间权限

useradd time

echo "password"|passwd time --stdin

visudo 

#注释Defaults    requiretty

#Defaults    requiretty

#增加如下语句

time ALL =(root)   NOPASSWD:  /bin/date

在Linux上就配置好了


接下来一步比较麻烦:

现在本地执行脚本,传入参数:

time.bat 2017/05/18  10:04:00

然后就会弹出putty要求确认的画面

测试环境修改Linux及Windows服务器时间方案_第2张图片

这个时候你就去注册表导出putty配置文件

Windows Registry Editor Version 5.00


[HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys]

"rsa2@22:192.168.1.100"="0x10001,0xd7ffdc7a88b37ed31bac6ebe5ba48d06e30e143fee6746fcee75af577d6b16968c11cbddccd1038a8d330093227eee28a643357537c8bcc5fb8298832a01b0de7a34f3aed85f10a72be183d58b2dcc8cc9933af76ad411bb7701221bd9276285b9116afd3b24ee4d7fec4847366e2a8c01875e6726626e376dfdfeb0a37239d6c22cf5da06f71059a361dbed7ff8539a3d48e18bf822a34d3757cff457c73983b7b14ba336789c6eb3ab418ad2ae574990d10146446a13003b62a74587557b6a778a9af585e5f0fcc32d7af2dfb3e8141b9181d4b043c322e83a26e1593b9fe085f1af227a3c78e4e43ebbc4f6474312ecda286043c5af306a43825050cddb9d"


类似于这样的

修改配置导出的注册表文件

将HKEY_CURRENT_USER替换为HKEY_USERS\.DEFAULT

Windows Registry Editor Version 5.00


[HKEY_USERS\.DEFAULT\Software\SimonTatham\PuTTY\SshHostKeys]

"rsa2@22:192.168.1.100"="0x10001,0xd7ffdc7a88b37ed31bac6ebe5ba48d06e30e143fee6746fcee75af577d6b16968c11cbddccd1038a8d330093227eee28a643357537c8bcc5fb8298832a01b0de7a34f3aed85f10a72be183d58b2dcc8cc9933af76ad411bb7701221bd9276285b9116afd3b24ee4d7fec4847366e2a8c01875e6726626e376dfdfeb0a37239d6c22cf5da06f71059a361dbed7ff8539a3d48e18bf822a34d3757cff457c73983b7b14ba336789c6eb3ab418ad2ae574990d10146446a13003b62a74587557b6a778a9af585e5f0fcc32d7af2dfb3e8141b9181d4b043c322e83a26e1593b9fe085f1af227a3c78e4e43ebbc4f6474312ecda286043c5af306a43825050cddb9d"

然后再倒入到注册表中。


这个是将用户与linux信任的密钥,让所有用户都信任,这样才能登录所有的Linux服务器