Используйте пакетный скрипт в качестве задачи ConEmu

641
Vince

Мне часто нужно подключаться к различным серверам, используя SSH. Я использую встроенный SSH-клиент из Cmder, вот так:

cmd /c "%ConEmuDir%\..\git-for-windows\usr\bin\ssh.exe root@server1" -new_console:C:"C:\Apps\cmder-git\icons\cmder.ico" -new_console:P:^<Ubuntu^> -new_console:t:server1 

Но я ленив, поэтому я хочу написать пакетный скрипт, который будет принимать только один аргумент для подключения к любой конечной точке SSH (например:) conssh root@server1, и будет вызываться для создания новых вкладок ConEmu из диалогового окна « Новая консоль » (создавая столько же ConEmu задачи как сервер не вариант).

conssh.bat (в пределах% PATH%):

@echo off  :: Aliases if "%1"=="s1" ( set arg="root@server1" ) else if "%1"=="c1" ( set arg="-t root@server1 ssh root@container1.lxc" ) else ( set arg=%1 )  :: cmd /c "%ConEmuDir%\..\git-for-windows\usr\bin\ssh.exe %arg%" -new_console:C:C:\Apps\cmder-git\icons\cmder.ico -new_console:P:^<Ubuntu^> -new_console:t:"%1" :: => Fail (works, but opens a useless tab : "ConEmuC: Root process was alive less than 10 sec, ExitCode=121.")  :: cmd /c "%ConEmuDir%\..\git-for-windows\usr\bin\ssh.exe %arg%" -cur_console:C:C:\Apps\cmder-git\icons\cmder.ico -cur_console:P:^<Ubuntu^> -cur_console:t:"%1" :: => Fail (ConEmuC: Root process was alive less than 10 sec, ExitCode=1.)  :: "%ConEmuDir%\..\git-for-windows\usr\bin\ssh.exe %arg%" -new_console:C:C:\Apps\cmder-git\icons\cmder.ico -new_console:P:^<Ubuntu^> -new_console:t:"%1" :: => Fail (ConEmuC: Root process was alive less than 10 sec, ExitCode=1.)  :: cmd /k "%ConEmuDir%\..\git-for-windows\usr\bin\ssh.exe %arg%" -new_console:C:C:\Apps\cmder-git\icons\cmder.ico -new_console:P:^<Ubuntu^> -new_console:t:"%1" :: => Fail (works, but opens a useless tab : "ConEmuC: Root process was alive less than 10 sec, ExitCode=121.")  :: cmd /k "%ConEmuDir%\..\git-for-windows\usr\bin\ssh.exe %arg%" -cur_console:C:C:\Apps\cmder-git\icons\cmder.ico -cur_console:P:^<Ubuntu^> -cur_console:t:"%1" :: => Fail (opens a cmd.exe shell, not ssh)  :: cmd /c -new_console:C:C:\Apps\cmder-git\icons\cmder.ico -new_console:P:^<Ubuntu^> -new_console:t:"%1" :: cmd /c "%ConEmuDir%\..\git-for-windows\usr\bin\ssh.exe %arg%" :: => Fail (opens a useless tab, with wrong icon)  :: start /b "%ConEmuDir%\..\git-for-windows\usr\bin\ssh.exe %arg%" -new_console:C:C:\Apps\cmder-git\icons\cmder.ico -new_console:P:^<Ubuntu^> -new_console:t:"%1" :: => Fail  :: start /b "%ConEmuDir%\..\git-for-windows\usr\bin\ssh.exe %arg%" -cur_console:C:C:\Apps\cmder-git\icons\cmder.ico -cur_console:P:^<Ubuntu^> -cur_console:t:"%1" :: => Fail 

Как я могу заставить его работать (открыть только одну вкладку, с нужным значком, палитрой и заголовком)?

Спасибо

0
Где Гейб вы установили ConEmu? Попробуйте первый вариант с -new_console, но используйте `ConEmuC.exe -c` вместо` cmd / c`. Maximus 7 лет назад 0
Я получил тот же результат с `ConEmuC.exe -c ...`: бесполезная вкладка с ExitCode = 121. Я использую `ConEmuC build 160710 x86` на Windows 7 64bit. Vince 7 лет назад 0

1 ответ на вопрос

0
Vince

Я отвечаю на свой собственный вопрос, нашел обходной путь с помощью ConEmu -Single(скрипт запускается непосредственно из оболочки Windows вместо диалогового окна New console ):

@echo off  set cmderlocation=C:\Apps\cmder-git set icon=cmder_blue.ico  :: Aliases if "%1"=="s1" ( set arg=root@server1 ) else if "%1"=="c1" ( set arg=-t root@server1 ssh root@container1.lxc ) else ( set arg=%* set icon=cmder_red.ico )  "%cmderlocation%\vendor\conemu-maximus5\ConEmu.exe" -Single -run cmd /c "%cmderlocation%\vendor\git-for-windows\usr\bin\ssh.exe %arg%" -new_console:C:"%cmderlocation%\icons\%icon%" -new_console:P:^<Ubuntu^> -new_console:t:"%1"