[Win7] RDP: автоматически подключиться к VPN
От: Sinclair Россия https://github.com/evilguest/
Дата: 27.10.09 09:01
Оценка:
Перед тем, как сделать RDP подключение к рабочей машинке, мне нужно активировать VPN соединение с офисом.
Как мне сделать это в один клик?
К сожалению, в настройках .rdp файла я не вижу указания, какое сетевое подключение ему использовать.
Может быть, можно написать скриптик, который запустит VPN, а потом запустит RDP с нужным файлом?
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: [Win7] RDP: автоматически подключиться к VPN
От: Сергей Мухин Россия  
Дата: 27.10.09 09:08
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Перед тем, как сделать RDP подключение к рабочей машинке, мне нужно активировать VPN соединение с офисом.

S>Как мне сделать это в один клик?
S>К сожалению, в настройках .rdp файла я не вижу указания, какое сетевое подключение ему использовать.
S>Может быть, можно написать скриптик, который запустит VPN, а потом запустит RDP с нужным файлом?

По VPN просто: используйте RASDIAL
про RDP: посмотрите сам файл, там понятно все
---
С уважением,
Сергей Мухин
Re[2]: [Win7] RDP: автоматически подключиться к VPN
От: Sinclair Россия https://github.com/evilguest/
Дата: 27.10.09 09:35
Оценка:
Здравствуйте, Сергей Мухин, Вы писали:

СМ>По VPN просто: используйте RASDIAL

Ок, спасибо, похоже это то, что нужно.
СМ>про RDP: посмотрите сам файл, там понятно все
Посмотрел. Ничего из того, что меня интересует, не увидел. Это же просто то же самое, что в UI, только в виде name=value.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: [Win7] RDP: автоматически подключиться к VPN
От: DOOM Россия  
Дата: 27.10.09 09:59
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Перед тем, как сделать RDP подключение к рабочей машинке, мне нужно активировать VPN соединение с офисом.

S>Как мне сделать это в один клик?
S>К сожалению, в настройках .rdp файла я не вижу указания, какое сетевое подключение ему использовать.
Мда... Все-таки нельзя сделать исходящий VPN интерфейс по требованию... А жаль.. Хотя может способ и есть.

S>Может быть, можно написать скриптик, который запустит VPN, а потом запустит RDP с нужным файлом?

Можно сделать такой профиль подключения, который после соединения запустить RDP файлик (такие профили делаются CMAK'ом).
Re: [Win7] RDP: автоматически подключиться к VPN
От: fuyant  
Дата: 28.10.09 11:27
Оценка: 93 (1)
Здравствуйте, Sinclair, Вы писали:

S>Перед тем, как сделать RDP подключение к рабочей машинке, мне нужно активировать VPN соединение с офисом.

S>Как мне сделать это в один клик?
S>К сожалению, в настройках .rdp файла я не вижу указания, какое сетевое подключение ему использовать.
S>Может быть, можно написать скриптик, который запустит VPN, а потом запустит RDP с нужным файлом?

Я себе как то написал скриптик — включает все нужные сетевые интерфесы, поднимает VPN (используется OpenVPN), стартует RDP.
В нем есть маленькое неудобство: когда поднимается OpenVPN, то его процесс не завершается, и приходится смотреть глазами — нормально ли все подключилось. После этого тыкать еще одну кнопочку, чтобы запустить RDP, либо перезапускать что-то, что не заработало. Другого способа я не нашел

Однажды меню все это поднадоело, и я на коленке накидал тулзу, которая все это делает сама, и тогда действительно остался один клик — запуск самой тулзы. Если интересно, могу дать код.

Сам скрипт:

для запуска под UAC:

elevate.vbs

' //***************************************************************************
' // ***** Script Header *****
' // =======================================================
' // Elevation PowerToys for Windows Vista v1.1 (04/29/2008)
' // =======================================================
' //
' // File:      Elevate.vbs
' //
' // Additional files required:  Elevate.cmd
' //
' // Purpose:   To provide a command line method of launching applications that
' //            prompt for elevation (Run as Administrator) on Windows Vista.
' //
' // Usage:     (Not used directly.  Launched from Elevate.cmd.)
' //
' // Version:   1.0.1
' // Date :     01/03/2007
' //
' // History:
' // 1.0.0   01/02/2007  Created initial version.
' // 1.0.1   01/03/2007  Added detailed usage output.
' //
' // ***** End Header *****
' //***************************************************************************


Set objShell = CreateObject("Shell.Application")
Set objWshShell = WScript.CreateObject("WScript.Shell")
Set objWshProcessEnv = objWshShell.Environment("PROCESS")

' Get raw command line agruments and first argument from Elevate.cmd passed
' in through environment variables.
strCommandLine = objWshProcessEnv("ELEVATE_CMDLINE")
strApplication = objWshProcessEnv("ELEVATE_APP")
strArguments = Right(strCommandLine, (Len(strCommandLine) - Len(strApplication)))

If (WScript.Arguments.Count >= 1) Then
    strFlag = WScript.Arguments(0)
    If (strFlag = "") OR (strFlag="help") OR (strFlag="/h") OR (strFlag="\h") OR (strFlag="-h") _
        OR (strFlag = "\?") OR (strFlag = "/?") OR (strFlag = "-?") OR (strFlag="h") _
        OR (strFlag = "?") Then
        DisplayUsage
        WScript.Quit
    Else
        objShell.ShellExecute strApplication, strArguments, "", "runas"
    End If
Else
    DisplayUsage
    WScript.Quit
End If


Sub DisplayUsage

    WScript.Echo "Elevate - Elevation Command Line Tool for Windows Vista" & vbCrLf & _
                 "" & vbCrLf & _
                 "Purpose:" & vbCrLf & _
                 "--------" & vbCrLf & _
                 "To launch applications that prompt for elevation (i.e. Run as Administrator)" & vbCrLf & _
                 "from the command line, a script, or the Run box." & vbCrLf & _
                 "" & vbCrLf & _
                 "Usage:   " & vbCrLf & _
                 "" & vbCrLf & _
                 "    elevate application <arguments>" & vbCrLf & _
                 "" & vbCrLf & _
                 "" & vbCrLf & _
                 "Sample usage:" & vbCrLf & _
                 "" & vbCrLf & _
                 "    elevate notepad ""C:\Windows\win.ini""" & vbCrLf & _
                 "" & vbCrLf & _
                 "    elevate cmd /k cd ""C:\Program Files""" & vbCrLf & _
                 "" & vbCrLf & _
                 "    elevate powershell -NoExit -Command Set-Location 'C:\Windows'" & vbCrLf & _
                 "" & vbCrLf & _
                 "" & vbCrLf & _
                 "Usage with scripts: When using the elevate command with scripts such as" & vbCrLf & _
                 "Windows Script Host or Windows PowerShell scripts, you should specify" & vbCrLf & _
                 "the script host executable (i.e., wscript, cscript, powershell) as the " & vbCrLf & _
                 "application." & vbCrLf & _
                 "" & vbCrLf & _
                 "Sample usage with scripts:" & vbCrLf & _
                 "" & vbCrLf & _
                 "    elevate wscript ""C:\windows\system32\slmgr.vbs"" –dli" & vbCrLf & _
                 "" & vbCrLf & _
                 "    elevate powershell -NoExit -Command & 'C:\Temp\Test.ps1'" & vbCrLf & _
                 "" & vbCrLf & _
                 "" & vbCrLf & _
                 "The elevate command consists of the following files:" & vbCrLf & _
                 "" & vbCrLf & _
                 "    elevate.cmd" & vbCrLf & _
                 "    elevate.vbs" & vbCrLf

End Sub


elevate.cmd

:: //***************************************************************************
:: // ***** Script Header *****
:: // =======================================================
:: // Elevation PowerToys for Windows Vista v1.1 (04/29/2008)
:: // =======================================================
:: //
:: // File:      Elevate.cmd
:: //
:: // Additional files required:  Elevate.vbs
:: //
:: // Purpose:   To provide a command line method of launching applications that
:: //            prompt for elevation (Run as Administrator) on Windows Vista.
:: //
:: // Usage:     elevate.cmd application <application arguments>
:: //
:: // Version:   1.0.0
:: // Date :     01/02/2007
:: //
:: // History:
:: // 1.0.0   01/02/2007  Created initial version.
:: //
:: // ***** End Header *****
:: //***************************************************************************

@setlocal
@echo off

:: Pass raw command line agruments and first argument to Elevate.vbs
:: through environment variables.
set ELEVATE_CMDLINE=%*
set ELEVATE_APP=%1

start wscript //nologo "%~dpn0.vbs" %*


elevated_connect.bat

call "%~dp0\elevate.cmd" "%~dp0\connect.bat"


подключение:

connect.bat

@echo off

@rem goto batch directory (if elevated on admin, cur dir is c:\windows\system32)
cd %~dp0

set restart=0

tasklist /fi "IMAGENAME eq openvpn.exe" 2>&1 | find "openvpn.exe"
if %errorlevel% == 0 goto taskfound
if not %errorlevel% == 0 goto begin


:taskfound
echo.
echo existing OpenVpn process found
echo type "kill" to kill this process and close all connections
echo type "exit" to close window
set user=
set /p user=
if %user% == kill (
    set restart=1
    goto killall
)
if %user% == exit goto end
goto taskfound


:begin
echo enabling interface...
devcon enable @ROOT\NET\0000


echo starting openvpn...
start /D. vpnconnect.bat


echo.
echo type "ok" when OpenVPN successfully initialized
echo type "quit" if OpenVPN initialization failed
set user=
set /p user=
if %user% == quit goto killall


:startrdp
echo starting RDP...
start mstsc.exe MyRdpFile.rdp


:getinput
echo type "quit" to close OPENVPN and all connections
echo type "exit" to just close this window
set user=
set /p user=
if %user% == quit goto killall
if %user% == exit goto end
goto getinput


:killall
echo killing openvpn...
taskkill /im openvpn.exe /f
echo killing RDP...
taskkill /im mstsc.exe /f
echo disabling interface...
devcon disable @ROOT\NET\0000
echo.
if %restart% == 1 goto restarthere
goto end


:restarthere
set restart=0
echo restart connection? Type "yes/no"
set user=
set /p user=
if %user% == yes goto begin
if %user% == no goto end
goto restarthere

:end


vpnconnect.bat

@echo off
cd ..\config\
..\bin\openvpn --service openvpngui_exit_event_0 0 --config "MyVpnConfig.ovpn" < "..\connect\MyPasswordFile"
exit



для работы нужны утилита devcon, права админа , сохраненный файл подключения MyRdpFile.rdp, конфига MyVpnConfig.ovpn и пароля к VPN MyPasswordFile
под уаком запускать elevated_connect.bat, без него — запускать connect.bat. Все скрипты должны валяться в папке OpenVPN (ну или правильно подсовывать ему пути)
Закрытие соединений происходит простым убиванием процессов openvpn.exe и mstsc.exe Ну и отключение сетевого интерфейса
Re[2]: [Win7] RDP: автоматически подключиться к VPN
От: Sinclair Россия https://github.com/evilguest/
Дата: 28.10.09 11:45
Оценка:
Здравствуйте, fuyant, Вы писали:
Адский отжиг.
Пригодится — у меня аккурат OpenVPN.

Впрочем, исходная задача — она не для меня, а для стандартного виндового VPN клиента .

Так что, похоже, она решится RasDial, к тому же в семёрке кто угодно без прав админа может коннектиться к существующим соединениям, и никакого elevation не нужно.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.