Как выполнить скрипт оболочки Unix из Windows - PullRequest
6 голосов
/ 21 апреля 2009

У меня есть скрипт AIX, который я хотел бы запустить из приложения .NET. Я не против запуска пакетного файла Windows, если это дает мне лучшие варианты.

Большая часть того, что я видел в Google, касается использования таких инструментов, как rsh или Plink, или использования ssh или telnet. У меня нет доступа к rsh или Plink (хотя у меня есть PuTTY и, возможно, я могу получить Plink). Я могу подключиться по ssh к AIX, но telnet отключен.

Мне понадобится способ передачи учетных данных пользователя.

Кто-нибудь может порекомендовать лучший способ вызова сценария Unix из приложения Windows?

Ответы [ 4 ]

5 голосов
/ 21 апреля 2009

Установите Cygwin. Включите функцию ssh. Настройте ваши ключи SSH - закрытый ключ в Windows, открытый ключ в окне AIX. Затем вы можете запустить «ssh user @ aixbox script-on-aix-box.sh».

Лучше всего иметь скрипт в AIX, хотя вы можете использовать scp, чтобы сначала скопировать файл в AIX. Передача длинной командной строки через ssh предрасположена к ошибкам - не потому, что это ssh, а потому, что правильная настройка escape-адресов для передачи из .NET через ssh в ksh или что-либо еще, работающее в AIX, просто болезненна. Лучше всего, чтобы все было как можно проще, желательно только одной командой, которая затем может быть сценарием, выполняющим несколько действий.

Чтобы ответить на ваши комментарии, это займет слишком много времени для другого комментария:

(1) Почему лучше использовать утилиту cygwin ssh вместо утилиты Windows ssh?

а) Я знаю это лучше, поэтому я бы не стал предлагать какую-либо утилиту Windows ssh (я даже не знал, что Windows поставляется с утилитой ssh), и б) У утилиты cygwin ssh больше шансов быть стандартной. SSH со всеми знакомыми нам, любителям Unix, нравятся. : -)

(2) Для чего нужны ключи? Позволяет ли это кросс-платформенную аутентификацию или это просто способ асимметричного шифрования пароля?

Ключи разрешают доступ без пароля. Если вы установили свой закрытый ключ как пароль без пароля (обычно это не рекомендуется, но если вы можете обеспечить безопасность своего компьютера, он хорошо работает для автоматизированных инструментов), ваш инструмент сможет просто выполнить ssh без запросов пароля - это значительно упростит задачу. .

3 голосов
/ 21 апреля 2009

ssh eximadmin @ 172.16.12.10 "cat somefile.log"

(где cat somefile.log заменяется командой, которую вы хотите запустить)

Я думаю, что самый простой способ сделать это - вызвать вашу программу ssh (будь то ssh, plink или что-то еще) из командного файла, который вызывается из вашего приложения .net.

1 голос
/ 21 апреля 2009

Что бы я сделал, это настроил бы интерфейс службы (https) на коробке AIX, которую может запустить приложение .Net. Это действительно вопрос того, как вы хотите представить свой сценарий в окне AIX. IMHO Java + Tomcat было бы достаточно легко настроить на AIX, просто убедитесь, что вы ограничиваете свою экспозицию и / или запрашиваете билет для аутентификации для службы AIX. Это не столько вопрос .Net, сколько архитектурное решение.

- изменить -

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

1 голос
/ 21 апреля 2009

Я поддерживаю предложение Cygwin, но у вас есть еще один вариант - Microsoft для UNIX .

от Microsoft.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...