Поиск имени удаленной ОС через Jsch в Java

#java #ssh #jsch #remote-connection

#java #ssh #jsch #удаленное подключение

Вопрос:

Я использую Jsch для подключения к удаленной машине в моем Java-коде. Я хочу выполнить команду на удаленной машине. В Windows мне нужно добавить "cmd /c" перед командой, которая должна быть выполнена, но для Linux это не требуется. Итак, я хочу знать, к какой ОС я подключился через Jsch. Один из способов, который приходит мне на ум, — запустить какую-нибудь простую специфичную для Windows команду, если она работает, это windows. Если это не так, это какая-то другая ОС. И затем я выполню свою фактическую команду. Есть ли способ избежать этого? Какой-нибудь другой способ выполнять команды ОС независимо через SSH через Jsch?

Комментарии:

1. Я бы попробовал запустить /bin/uname . Очевидно, что на удаленном компьютере с Windows это, вероятно, не сработает. Локально вы можете использовать System.getProperty("os.name")

Ответ №1:

Для этого нет чисто научного способа. Однако вы можете найти много эвристики. Когда-то давно мы использовали command pwd в качестве первой команды и анализировали ее вывод. Он печатает что-то разумное в системах Unix и сообщение об ошибке в Windows.

Однако теперь я могу предложить вам использовать следующую команду:

echo $PATH %PATH%

Это будет работать на всех операционных системах. Затем вы можете проанализировать путь, который он печатает. Например, направление косых / черт или может подсказать вам, что это за ОС.