Как удалить папку в удаленной Windows из Linux - PullRequest
0 голосов
/ 04 мая 2018

Я запускаю тесты автоматизации как на локальном (Linux), так и на удаленном узле Selenium (Windows). И я хочу удалить папку, созданную во время теста, используя Java Runtime.getRuntime().exec. Он отлично работает на локальных (Linux), но мне трудно понять, как это сделать на узле Windows. Следующие мои попытки:

try {
    if (rBundle.getString("RUN_ON").equalsIgnoreCase("local")) // delete folder temp on local (Linux) - it works
        Runtime.getRuntime().exec("rm -rf " + System.getProperty("user.home") + "/Temp");
    else // delete folder C:/Temp on remote Windows
        Runtime.getRuntime().exec("rm -rf IEUser@10.2.2.240/C/Temp");
        // Runtime.getRuntime().exec("rm -rf //10.2.2.240/C/Temp");
} catch (IOException e) {
    e.printStackTrace();
}

Я пытаюсь удалить папку C: / Temp на удаленной Windows, но у меня ничего не получается. Я не получаю никаких исключений, все прошло через этот блок. Очевидно, что командная строка неверна, но я понятия не имею.

Любая помощь высоко ценится. Спасибо

Ответы [ 4 ]

0 голосов
/ 14 мая 2018

Другим способом достижения этой цели может быть выполнение этого прямо с веб-сервера путем добавления метода для очистки ресурсов на вашем веб-сайте.

Например: http://your_server/clean_resources

Затем просто используйте Java для удаления папки:

// You could pass a parameter to the URL to know if it's windows  
// or linux and set the path accordingly
String path = "c:/temp";

Path directory = Paths.get(path);
    Files.walkFileTree(directory, new SimpleFileVisitor<Path>() {

        @Override
        public FileVisitResult visitFile(Path file,
                BasicFileAttributes attrs) throws IOException {
            Files.delete(file);
            return FileVisitResult.CONTINUE;
        }

        @Override
        public FileVisitResult postVisitDirectory(Path dir, IOException exc)
                throws IOException {
            Files.delete(dir);
            return FileVisitResult.CONTINUE;
        }
    });

Наконец, используя Selenium, просто перейдите по этому URL, когда закончите тест.

driver.get("http://your_server/clean_resources");
0 голосов
/ 13 мая 2018

Первоначально добавлено это как комментарий, но обновление для ответа для большей наглядности.

Выполните команду rm на сервере Windows через ssh. Для этого потребуется настроить ssh-сервер в Windows, Cygwin выглядит одним из лучших вариантов. После того, как вы настроите сервер ssh, для выполнения удаленной команды rm будет использоваться команда ssh IEUser@10.2.2.240 "rm -rf /cygdrive/c/Temp".

0 голосов
/ 14 мая 2018

rm - это команда для командной строки Linux, эквивалентная команде в windows is del command:

    C:\>del /?
    Deletes one or more files.

    DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
    ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names

      names         Specifies a list of one or more files or directories.
                    Wildcards may be used to delete multiple files. If a
                    directory is specified, all files within the directory
                    will be deleted.

      /P            Prompts for confirmation before deleting each file.
      /F            Force deleting of read-only files.
      /S            Delete specified files from all subdirectories.
      /Q            Quiet mode, do not ask if ok to delete on global wildcard
      /A            Selects files to delete based on attributes
      attributes    R  Read-only files            S  System files
            H  Hidden files               A  Files ready for archiving
            I  Not content indexed Files  L  Reparse Points
            -  Prefix meaning not

Чтобы удалить папку, используйте:

      DEL /F /S /Q /A "Full Path of Folder\*"

Ссылка: sevenforums

0 голосов
/ 13 мая 2018

в Windows попробуйте

rmdir directoryname /s /q

согласно документации https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/rd

/ s Удаляет дерево каталогов (указанный каталог и все его подкаталоги, включая все файлы).

/ q Указывает тихий режим. Не запрашивает подтверждения при удалении дерева каталогов. (Обратите внимание, что / q работает, только если указан / s.)

Как вы запускаете эту команду Windows со станции Linux ... хороший вопрос

...