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仍可以连接,只是没有断点重连效果。
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仍可以连接,只是没有断点重连效果。
相关文章推荐
- pgcli通过SSH本地端口转发连接远程服务器上的PostgreSQL DB
- 后台任务稳定运行方案--不受终端关闭或者远程(ssh等)连接失败影响
- 修改linux ssh和windows 远程连接 监听端口
- c# 实现端口转发可以用来实现远程桌面连接内网主机
- Ubuntu 开启 SSH服务,并实现远程windows 主机 SecureCRT连接
- SSH 远程连接端口转发
- Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]
- 使用plink以及ssh转发连接到局域网内的远程桌面或其它端口
- Linux使用screen实现关闭ssh连接的情况下,让程序继续在后台运行
- 后台任务稳定运行方案--不受终端关闭或者远程(ssh等)连接失败影响
- 本地eclipse连接远程hadoop集群运行wordcount实例,实现远程调试
- 使用 SSH 远程连接运行图形界面程序(ubuntu)
- 配置Windows 2008 R2 防火墙允许远程访问SQL Server 2008 R2 更改端口 连接字符串 IP+逗号+端口号
- Linux下SSH远程连接断开后让程序继续运行解决办法
- SSH原理与运用(二):远程操作与端口转发
- 如何实现SSH断开后 进程仍然在后台运行
- 本地打印后台处理程序服务没有运行和windows无法连接到打印机拒绝访问
- centos 实现ssh远程连接docker
- Linux配置SSH服务以便实现远程连接
- 如何实现SSH断开后 进程仍然在后台运行