您的位置:首页 > 编程语言 > VB

plink+批处理+vbs实现ssh远程端口转发后台运行断点连接(windows下)

2014-03-26 17:22 585 查看
准备工作:
plinkssh1.bat 放在E盘下
plinkssh1.vbs 任意位置

plinkssh2.bat 放在E盘下
plinkssh2.vbs 任意位置
plink.exe 放在E盘下

假设外网服务器IP为 8.8.8.8 映射端口号为 88 本地映射端口号为 80 外网服务器域名 www.abcde.com ssh登陆账号为root 密码为passwd

外网服务器IP为 8.8.8.8 另一个端口号为 89 本地映射端口号为 81 外网服务器域名 www.abcde.com ssh登陆账号为root 密码为passwd

在8.8.8.8的服务器/etc/ssh/sshd_config中添加或修改GatewayPorts yes允许端口转发

plinkssh1.bat内容

@echo off
:x
tasklist /nh | find /i /C "plink.exe" > E:\ch.txt
set /p ch=<E:\ch.txt
if %ch%==0 (E:\plink.exe -ssh -R 8.8.8.8:88:127.0.0.1:80 www.abcde.com -l root -pw passwd)
if %ch%==1 (E:\plink.exe -ssh -R 8.8.8.8:88:127.0.0.1:80 www.abcde.com -l root -pw passwd)
ping 127.0.0.1 -n 10 > nul

goto x

plinkssh1.vbs内容

set ws=WScript.CreateObject("WScript.Shell")
ws.Run "E:\plinkssh1.bat",0

plinkssh2.bat内容

@echo off
:x
tasklist /nh | find /i /C "plink.exe" > E:\ch.txt
set /p ch=<E:\ch.txt

if %ch%==0 (E:\plink.exe -ssh -R 8.8.8.8:89:127.0.0.1:81 www.abcde.com -l root -pw passwd)
if %ch%==1 (E:\plink.exe -ssh -R 8.8.8.8:89:127.0.0.1:81 www.abcde.com -l root -pw passwd)
ping 127.0.0.1 -n 10 > nul

goto x

plinkssh2.vbs内容

set ws=WScript.CreateObject("WScript.Shell")
ws.Run "E:\plinkssh2.bat",0

只需要运行plinkssh1.vbs、plinkssh2.vbs就可以了,并在任务计划中将plinkssh1.vbs、plinkssh2.vbs设为开机启动

set /p ch=<
输入的值为字符串,所以不能用if %ch% less 2来简化命令,如果有转换数值的命令,麻烦告知下,谢谢
plinkssh1.vbs plinkssh2.vbs不能合并为一个plinkssh.vbs,当合并为plinkssh.vbs时,只运行第一个plink1.bat

断点重连效果是:杀死plink.exe进程或远端服务器断开时,在10秒内可以重连,当ssh连接时脚本不执行ping本机和搜索本机进程命令,当ssh连接不上时,该脚本一直循环直到连上为止。可通过设ping的时间来减少连接不上的搜索进程次数。脚本的进程程序是cmd.exe,杀死cmd.exe时,plink仍可以连接,只是没有断点重连效果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: