Найти имя удаленной ОС через Jsch в Java

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


person Durin    schedule 24.06.2014    source источник
comment
Я бы попробовал запустить /bin/uname. Очевидно, что на удаленной машине с Windows это, вероятно, не сработает. Локально можно использовать System.getProperty("os.name")   -  person Elliott Frisch    schedule 24.06.2014


Ответы (1)


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

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

echo $PATH %PATH%

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

person AlexR    schedule 24.06.2014