#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%
Это будет работать на всех операционных системах. Затем вы можете проанализировать путь, который он печатает. Например, направление косых /
черт или
может подсказать вам, что это за ОС.