Подключение к экземпляру Windows EC2 через код Java без протокола SMB - PullRequest
0 голосов
/ 20 марта 2019

Я пытаюсь подключить экземпляр AWS Windows через код Java с CIFS или WinRM, и мне не нужно использовать протокол SMB. Я не уверен, возможно ли это или нет .

На экземпляре работает служба WinRM, и для тестирования я разрешил весь трафик как входящий к экземпляру.

Я хочу скопировать некоторый файл в этом экземпляре, а также хочу запустить некоторый bash-скрипт, используя этот код Java.

Я попытался xebialabs / overthere с CIFS,

Следуя кодовой базе, которую я пытался достичь, но столкнулся с некоторой проблемой с этим (все свойства хоста есть)

    ConnectionOptions options = new ConnectionOptions();

    options.set(ConnectionOptions.OPERATING_SYSTEM, OperatingSystemFamily.WINDOWS);
    options.set(CifsConnectionBuilder.CONNECTION_TYPE, CifsConnectionType.WINRM_INTERNAL);
    options.set(CifsConnectionBuilder.WINRM_TIMEMOUT, "PT172800.000S");
    options.set(ConnectionOptions.CONNECTION_TIMEOUT_MILLIS, 900000);
    options.set(ConnectionOptions.SOCKET_TIMEOUT_MILLIS, 900000);
    options.set(CifsConnectionBuilder.WINRM_ENABLE_HTTPS, false);
    options.set(CIFS_PORT, CIFS_PORT_DEFAULT);
    options.set(ConnectionOptions.PROTOCOL, CIFS_PROTOCOL);

    // Host Properties
    options.set(ConnectionOptions.ADDRESS, host);
    options.set(ConnectionOptions.USERNAME, user);
    options.set(ConnectionOptions.PASSWORD, password);

    AddressPortMapper mapper = DefaultAddressPortMapper.INSTANCE;
    OverthereFile workingDirectory = null;
    WinrsConnection connection = new WinrsConnection(options, mapper, workingDirectory);

    connection.connect();

Ошибка:

Исключение в потоке "main "java.lang.IllegalArgumentException: Невозможно создать соединение smb: winrm_native с прокси-сервером winrs, который не работает под управлением Windows в com.xebialabs.overthere.winrs.WinrsConnection.connect (WinrsConnection.java:89) в ot.WinRmUtils.getWinRConConv.WinRmUtils.java:76) в ot.WinRmUtils.getNewWinRMConnection (WinRmUtils.java:89) в ot.OtPOC.main (OtPOC.java:16)

Я также пытался cloudsoft /winrm4j Но это тоже не работает.

1 Ответ

0 голосов
/ 11 апреля 2019

В конфигурации вы настраиваете CifsConnectionType.WINRM_INTERNAL, в то время как вы создаете WinrsConnection. Предпочитаю использовать фабричный метод Overthere.getConnection(CifsConnectionBuilder.CIFS_PROTOCOL, config) или создать экземпляр WinrmConnection напрямую.

WinrsConnection (или CifsConnectionType.WINRM_NATIVE) подходит только для подключений Windows-2-Windows, поскольку для выполнения команд WinRM используется команда winrs.exe.

WinrmConnection (или CifsConnectionType.WINRM_INTERNAL) подходит для всех соединений, так как это полностью реализовано в Java.

...