有关将python脚本配为windows Service并通过SSH连接的相关记录
一.应用场景
需要通过gitlab中的ci中的ssh命令去同步windows机器下的代码,并重启服务脚本
二.主要步骤
1.在windows下安装OpenSSH,打开ssh服务,这样才可以在SSH中免密登录windows机器
2.将pyhon脚本配成windows服务,在ssh中通过命令重启服务。
三.详细步骤
1.在windows下安装OpenSSH(如果有自定义配置看这里,没有特殊情况就按以下操作)
前言:打开的powerShell 或者 CMD 窗口必须以管理员权限打开
1.下载最新的OpenSSH安装包
https://github.com/PowerShell/Win32-OpenSSH/releases/tag/v8.0.0.0p1-Beta
powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1
3.打开防火墙
win10下使用这个命令
netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22
Windows 2012 and above使用这个命令
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
4.开启sshd
net start sshd
5.将sshd设为自启
Set-Service sshd -StartupType Automatic
安装好之后可以输入ssh命令,如有响应则代表配置成功
6.将linux(gitlab)服务器的公钥(注意linux的用户,在对应的用户下面找公钥)配置到windows机器上
(一定要用管理员权限打开PowerShell)
在 PowerShell 中执行 notepad .ssh\authorized_keys 命令创建文本文件,把客户端的公钥复制到这个文件中并保存
把文本文件的名称修改为 authorized_keys(没有后缀)
修改 ssh 服务的配置文件
以管理员权限打开 PowerShell,执行命令 notepad C:\ProgramData\ssh\sshd_config。
注释掉配置文件中的最后两行然后保存
最后在服务管理器器中重启 OpenSSH SSH Server 服务
2.将pyhon脚本的批处理.bat文件配成windows服务,在ssh中通过命令重启服务
1.下载软件 参考博客 https://blog.csdn.net/MAOZEXIJR/article/details/84546539
https://pan.baidu.com/s/1PI6qMjdVkuYyjRLokt7xRw 密码:fc1o
2.将解压出来的两个文件放到一个目录下,我这里举例在D盘下,
3.增加服务
命令格式 D:\instsrv.exe 服务名称 D:\srvany.exe (注意按管理员身份运行cmd,重要的事情说三遍)
举例 :D:\instsrv.exe platformOperation D:\srvany.exe
4.修改服务参数
1)打开注册表(win+r运行regedit)
查找路径:HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/platformOperation
2)platformOperation服务增加子项 Parameters
给子项 Parameters 增加两个字符串类型的参数 AppDirectory 和 Application,并指定参数值
本例中(.bat文件自己写,这里不叙述)
AppDirectory = E:\python\platform_operation_dev(程序所在文件主路径)
Application = E:\python\platform_operation_dev\platform_operation.bat(程序运行的bat路径)
最终应该如下图
3)查看服务列表,并启动 platformOperation 服务
查看服务列表(win+r运行services.msc),启动服务,至此服务配置完毕
建议在任务管理器里面查看服务状态,服务列表的状态更新不及时。
4)提供几个操作服务的命令
sc start platformOperation 启动服务
sc stop platformOperation 停止服务
sc delete platformOperation 删除服务
四.后续
现在就可以在通过ssh启动,停止,同步windows的代码