Планировщик задач Windows 8.1 не будет выполнять Rsync/SSH без входа в систему

Я создал и запланировал пакетный файл в Windows 8.1 (для выполнения резервного копирования rsync через туннель SSH) и могу запустить его:

  • вручную
  • через планировщик задач вручную, когда я щелкаю правой кнопкой мыши -> Выполнить
  • через планировщик задач автоматически, когда я вошел в систему, и он запланирован для запуска в указанное время

... но когда я не вошел в систему, он просто сидит в "Running", хотя я установил его следующим образом:

  • пользователь = я (я являюсь членом группы администраторов)
  • запустить независимо от того, вошли в систему или нет
  • работать с самыми высокими привилегиями

Я вижу в диспетчере задач, что rsync.exe и ssh.exe запущены, поэтому он должен зависать при вызове rsync / ssh. Это заставляет меня поверить, что проблема в том, что, хотя я явно установил имя пользователя, что-то не так, как я? (боковая панель: я также пытался запустить задачу от имени пользователя SYSTEM - там тоже не повезло)

Команда, которую я выдаю, выглядит так:

rsync --archive --verbose --human-readable --hard-links --delete --exclude '*.log' --exclude '*log*.*' -e  "%CWRSYNCBIN%\ssh -p 22103 -i C:\Users\test\.ssh\id_rsa" "/cygdrive/c/Users/test/Downloads" admin@1.2.3.4:/path/to/remote 1> %REPORTLOG% 2> %ERRORLOG%

Есть идеи? (Спасибо!)

2 ответа

Когда я столкнулся с этой проблемой в Windows Server 2012 R2, я обнаружил, что SSH.exe обнаружил ошибку разрешений при попытке создать файл known_hosts, несмотря на то, что задача выполнялась с учетными данными администратора и с самыми высокими привилегиями.

Решение состояло в том, чтобы указать на существующий пользовательский файл known_hosts, используя UserKnownHostsFile Опция SSH:

rsync -e "ssh -i sshkey -o UserKnownHostsFile path/to/known_hosts" source dest

Кажется, это проблема с домашним каталогом и неинтерактивной средой в запланированных заданиях в более новой версии Windows (начиная с Server 2008 и Vista?). Я нахожу это в нескольких обсуждениях, но с небольшим количеством информации, чтобы решить это:

Мое решение было:

  • установить задачу для запуска под пользователем, который, как доказано, может завершить rsync, установить запуск, когда пользователь вошел в систему или нет, я также установил, чтобы не сохранять пароль,
  • найти местоположение папки.ssh под этим пользователем (в его домашнем каталоге),
  • скопируйте.ssh в более простой путь, чтобы использовать его в переменной HOME (SET HOME=D:\CWRSYNC\HOME),
  • используйте следующий скрипт для запуска rsync:



    @ECHO OFF
    SETLOCAL
    SET CWRSYNCHOME=D:\CWRSYNC
    SET HOME=D:\CWRSYNC\HOME
    SET CWOLDPATH=%PATH%
    SET PATH=%CWRSYNCHOME%;%PATH%
    rsync.exe -rtvz --delete /cygdrive/b/ user@192.168.1.2:/volume1/NetBackup/ >> D://nas-backup-log.txt

Другие вопросы по тегам