Запуск скрипта до авторизации пользователя и выключение PC

Обсуждение программ nnCron и nnCron LITE

Запуск скрипта до авторизации пользователя и выключение PC

Postby jonimant » Wed, 07 Sep 2016, 15:53

Здравствуйте, Уважаемые!

Используется nCron 1.93 b15 + nnBackup 3.02B3

Задача:
1. Каждый день рано утром автоматически запускается компьютер (BIOS опция).
2. Сервис nncron запускает задачу резервного копирования через батник.
3. Выключается компьютер, если пользователь не залогинился в компьютер, это делается для того чтобы предовратить выключение комьютера , если пользователь начал свою работу, а резевное копирование еще не закончило копирование.

Code: Select all
#( shutdown1
LoadProfile
User: "Administrator" Password:  "TestPWD" Domain: "WORKGROUP" LogonInteractive
Time: 10 5 * * * *
Action:
StartIn: "D:\Backup"
ShowNormal   NormalPriority
AsService
START-APPW: D:\Backup\dump.cmd 0
LOGGEDON? @
IF
   LOG: "D:\Backup\Cron\cron.log" "Admin user logged on<p>"
ELSE
   LOG: "D:\Backup\Cron\cron.log" "Admin user logged off<p>"
   POWEROFF
THEN
)#


Лог выполнения скрипта:

Code: Select all
14:09:22 2456 Load crontab
14:09:22 2456 C:\Program Files (x86)\nnCron\nncron.tab
14:09:22 2456 D:\Backup\Cron\backup.tab
14:12:03 3176 TASK: shutdown1
14:12:03 3176 Start: D:\Backup\dump.cmd 0
14:12:15 3176 Start result: 0
14:12:45 3176 shutdown1: Internal error. Error # -1073741819


Подскажите почему nncron выводит ошибку, что делаю не так?
jonimant
 
Posts: 6
Joined: Wed, 07 Sep 2016, 08:22

Re: Запуск скрипта до авторизации пользователя и выключение

Postby dothen » Wed, 07 Sep 2016, 22:19

LOGGEDON? надо без @
dothen
 
Posts: 184
Joined: Mon, 16 Mar 2015, 04:58

Re: Запуск скрипта до авторизации пользователя и выключение

Postby jonimant » Thu, 08 Sep 2016, 10:32

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

залогинился и разлогинился один и тот же результат "Admin user logged off", посмотрел другой утилитой psloggedon от sysinternals все правильно показывает (при авторизации пользователь есть, при выходе нет).

также пробовал без строк:
LoadProfile
User: "Administrator" Password: "TestPWD" Domain: "WORKGROUP" LogonInteractive
результат тот же.
jonimant
 
Posts: 6
Joined: Wed, 07 Sep 2016, 08:22

Re: Запуск скрипта до авторизации пользователя и выключение

Postby elos » Thu, 08 Sep 2016, 14:15

Вчитался...

В пять утра стартуем машину, затем бекап.
Пункт третий задачи лично меня смущает своим синтаксисом и смыслом.
По остатку строки получается, что есть вероятность, что бекап ещё идёт, а кто-то уже логинится. Это во сколько по времени? С пяти утра то... То есть бекап идёт уже около трёх часов при начале работы в восемь утра.
Надеюсь, копирование локальное и времени много не занимает (как у некоторых - по полсотни машин по сети).

Чтобы не бороться с IF и LOGGEDON? предлагаю (если это приемлемо распорядком работы и требованиями к экономии электроэнергии) сделать следующим образом.

Рабочий день заканчивается известно когда. Раз комп выключают, значит работа не круглосуточная. Комп оставляем включённым, уходя с работы.
Когда гарантированно никого за машиной уже нет, стартуем nnBackup. И не надо никому задумываться, есть кто за машиной или нет, закончилось копирование или нет - гарантированно никого нет. Кстати, резервируют ведь сделанную работу? Вроде делать бекап на изменяемых данных не самое полезной дело? Мы же не серверную машину бекапим судя по выключению питания.
После окончания бекапа выключаем/усыпляем машину.

Получается, после START-APP(W) можно выкинуть все проверки и лог писать самим nnbackup в его или кроновский лог.

А без борьбы с авторизацией в nncron можно применить виндовый шедулер для старта nnbackup.
На машине, что, куча пользователей, что надо прям таки суперадмина указывать? У меня или максимум AsLoggedUser, или ничего нет.
Логинился ты под кем? Раз скрипт показывает, что "Admin user logged off", то ты не под Administrator логинился. Когда Win-L жмёшь, то что иконкой пользователя написано?
_____________
Кстати, AsService употреблять надо только при использовании logoff (комп продолжает работать), но никак не при POWEROFF (комп выключается). Получается, тоже лишняя строка.
elos
 
Posts: 664
Joined: Tue, 25 Apr 2006, 11:15

Re: Запуск скрипта до авторизации пользователя и выключение

Postby jonimant » Thu, 08 Sep 2016, 16:22

1. Во-первых пользователь всегда может вернуться и продолжить пользоваться компьютером (есть время с 5 до 8 утра), а утром все дома спят )
2. Во-вторых не хочется, чтобы посторонние вмешивались и прерывали копирование, компьютером пользуется только хозяин и только он может зайти под своим паролем. Поэтому ставилась задача выполнить резервное копирование утром, когда нет никого и проверка на авторизацию лишним не будет, чтобы пользователь не удивился почему компьютер сам выключился в самый подходящий момент (даже если резервное копирование делается медленнее чем кажется остальным). Хозяин, также может удаленно или через интернет положить и изменить файл, папку (поэтому исключается выполнение задания, когда пользователь вышел или выключил).

Штатный планировщик многое не умеет, что умеет nncron , поэтому пришлось воспользоваться этим функционалом в домашних целях. Все действия делаются без авторизации как сервис от конкретного пользователя с правами админа поэтому в главный файл была добавлен еще кронтаб-файл , который лежит на другом диске (на всякий случай), если делать крон-файл от пользователя, то он как сервис не запускается (win 7).
jonimant
 
Posts: 6
Joined: Wed, 07 Sep 2016, 08:22

Re: Запуск скрипта до авторизации пользователя и выключение

Postby dothen » Fri, 09 Sep 2016, 17:06

Попробуй вот так:
Code: Select all
#( shutdown1
LoadProfile
User: "Administrator" Password:  "TestPWD" Domain: "WORKGROUP" LogonInteractive
Time: 10 5 * * * *
Action:
StartIn: "D:\Backup"
ShowNormal   NormalPriority
AsService
START-APPW: D:\Backup\dump.cmd 0
<CronScript>
: main
LOGGEDON?
IF
   LOG: "D:\Backup\Cron\cron.log" "Admin user logged on<p>"
ELSE
   LOG: "D:\Backup\Cron\cron.log" "Admin user logged off<p>"
   POWEROFF
THEN
;
</SCRIPT>
)#

Надо подключить плагин CronScript.spf
dothen
 
Posts: 184
Joined: Mon, 16 Mar 2015, 04:58

Re: Запуск скрипта до авторизации пользователя и выключение

Postby jonimant » Fri, 09 Sep 2016, 18:06

при подключении в nncron.ini скрипта CronScript.spf пишет ошибку:

Code: Select all
16:55:13 4252 Service stopped.
16:56:29 6752 Loading error: C:\Program Files (x86)\nnCron\plugins\CronScript.spf:2
16:56:30 6752 Start nnCron
16:56:30 6752 Load crontab
16:56:30 6752 C:\Program Files (x86)\nnCron\nncron.tab
16:56:30 6752 D:\Backup\Cron\backup.tab
16:57:00 6752 shutdown1: Crontab syntax ERROR!!!. Task file: D:\Backup\Cron\backup.tab. Line: 120
16:57:00 6988 Console server is started.


В backup.tab ошибка ссылается на строчку <>CronScript>
jonimant
 
Posts: 6
Joined: Wed, 07 Sep 2016, 08:22

Re: Запуск скрипта до авторизации пользователя и выключение

Postby dothen » Fri, 09 Sep 2016, 19:11

Надо отключить службу: uninstall_svc.bat
И снова запустить службу: install_svc.bat
Тогда новые настройки из ini-файла вступят в силу.
dothen
 
Posts: 184
Joined: Mon, 16 Mar 2015, 04:58

Re: Запуск скрипта до авторизации пользователя и выключение

Postby jonimant » Fri, 09 Sep 2016, 19:23

делал это не раз и компьютер перезагружал. ошибка все та же.
jonimant
 
Posts: 6
Joined: Wed, 07 Sep 2016, 08:22

Re: Запуск скрипта до авторизации пользователя и выключение

Postby dothen » Fri, 09 Sep 2016, 19:41

Может ошибка в ini-файле или плагина нет в этой папке,
вон кронтабы на разных дисках...
dothen
 
Posts: 184
Joined: Mon, 16 Mar 2015, 04:58

Re: Запуск скрипта до авторизации пользователя и выключение

Postby jonimant » Fri, 09 Sep 2016, 20:01

без внесения плагина в кронтаб ошибок нет, плагин вставлен туда же где все остальные:

Code: Select all
 Directory of C:\Program Files (x86)\nnCron\plugins

09/09/2016  04:30 PM    <DIR>          .
09/09/2016  04:30 PM    <DIR>          ..
09/09/2016  04:49 PM             3,720 CronScript.spf
04/11/2006  05:29 PM             9,043 http.spf
11/26/2007  05:03 PM             1,495 net.spf
03/10/2006  11:26 AM             2,016 process.spf
02/11/2008  05:53 PM             1,629 procwin.spf
06/26/2003  08:09 PM             2,796 ras.spf
06/07/2006  05:31 PM             1,995 system.spf
04/19/2005  03:07 PM             3,773 time.spf
01/08/2004  08:35 PM             3,031 timesync.spf
09/28/2003  05:31 PM             2,479 tools.spf
06/26/2003  08:08 PM             1,271 wakeup.spf
03/27/2004  11:18 PM             6,667 win2tray.spf
06/30/2004  06:47 PM             2,698 windows.spf
06/26/2003  08:09 PM             2,777 winlirc.spf
              14 File(s)         45,390 bytes
               2 Dir(s)  30,299,410,432 bytes free


содержимое nncron.ini:
Spoiler: show
Code: Select all
\ This file contains nnCron settings.
\ The keywords are described in nnCron documentation.
\ All keywords are case sensitive.
\ Don't forget to place a blank space after each keyword.
\ Restart nnCron after editing this file to apply your changes.

ShowErrorMsg ON
Crontab: "nncron.tab"       \ path of crontab file
Crontab: "D:\Backup\Cron\backup.tab"
Editor: default
Language: english
Cronlog: "log\%MM%%DD%cron.log" \ path of log
LogTimeFormat: "%hh%:%mm%:%ss% %ThreadId%" \ pattern for log time
YearField ON
CompleteTaskTimeout: 2000
QueryStartTimeout: 30
QueryStartAnswer: Yes   
DefaultOpenMode: ShowNormal
DefaultPriority: NormalPriority
DefaultLogonType: LogonInteractive
SysTrayIcon ON
IconForAdminsOnly OFF
MonitorResponseTime: 100
BackupPath: backup
WatchWinCreateDelay: 100
WatchProcDelay: 1000
Console OFF
ItemExit ON
ItemOptions ON
ItemConsole ON
ItemReload ON
ItemSuspend ON
MenuHotKey: ""
Guard ON
DialOnce ON
RunAsDefaultUser OFF
DefaultUser: xx
DefaultPassword:
DefaultDomain: zz
DefaultLoadProfile OFF
GUIAsUser OFF
GUIUser: xx
GUIPassword:
GUIDomain: zz
GUILoadProfile ON
SyntaxRestriction OFF
HelpFile: doc\help.chm
RemConsole ON
RemConsolePort: 2002
RemAllowed: 127.0.0.1
RemDisallowed: x.x.x.x
Log2StdOut OFF
DefaultRunMissedTime: 15
ReloadImmediately ON
TrayIconDoubleClick: options
TrayIconRightButton: menu
TrayIconBalloonClick: NOOP
PerfMonitor OFF
MaxClipboardSize: 10240
Outfile ON
Logging ON

INCLUDE "plugins\tools.spf"
INCLUDE "plugins\win2tray.spf"
INCLUDE "plugins\windows.spf"
INCLUDE "plugins\timesync.spf"
INCLUDE "plugins\wakeup.spf"
INCLUDE "plugins\time.spf"
INCLUDE "plugins\system.spf"
INCLUDE "plugins\ras.spf"
INCLUDE "plugins\http.spf"
INCLUDE "plugins\procwin.spf"
INCLUDE "plugins\winlirc.spf"
INCLUDE "plugins\net.spf"
INCLUDE "plugins\CronScript.spf"

: CRONTAB-ERROR 10 1 DO 100 I 100 * BEEP LOOP ;
: REMINDER-SOUND 500 500 BEEP ;
jonimant
 
Posts: 6
Joined: Wed, 07 Sep 2016, 08:22

Re: Запуск скрипта до авторизации пользователя и выключение

Postby dothen » Sat, 10 Sep 2016, 00:31

А почему такой размер у файла CronScript.spf? У меня в ANSI - 3252 в UTF8 - 3837

Короче, делай без плагина.
Создай в папке крона файл poweroff.f
Code: Select all
: main
LOGGEDON?
IF
   LOG: "D:\Backup\Cron\cron.log" "Admin user logged on<p>"
ELSE
   LOG: "D:\Backup\Cron\cron.log" "Admin user logged off<p>"
   POWEROFF
THEN
;

Из задачи nnСron запустится как приложение и будет иметь доступ к рабочему столу и т.д.
(LOGGEDON? проверяет наличие панели задач).
Code: Select all
#( shutdown1
LoadProfile
User: "Administrator" Password:  "TestPWD" Domain: "WORKGROUP" LogonInteractive
Time: 10 5 * * * *
Action:
StartIn: "D:\Backup"
ShowNormal   NormalPriority
AsService
START-APPW: D:\Backup\dump.cmd 0

StartIn: "C:\Program Files (x86)\nnCron"
START-APP: nncron.exe -runfile poweroff.f
)#

Можно и без плагина и без файла poweroff.f
Code: Select all
START-APP: nncron.exe : power-off LOGGEDON? IF LOG: "D:\Backup\Cron\cron.log" "Admin user logged on<p>" ELSE LOG: "D:\Backup\Cron\cron.log" "Admin user logged off<p>" POWEROFF THEN ; power-off BYE

Длина одной строки в кронтабе не должна превышать 512 символов. см. Help
dothen
 
Posts: 184
Joined: Mon, 16 Mar 2015, 04:58

Re: Запуск скрипта до авторизации пользователя и выключение

Postby elos » Sat, 10 Sep 2016, 14:29

На всякий случай - винда то какая? И "мамка" какая?
Во сколько по времени BIOS стартует машину?
А то мне уже интересно становится в "наслоения" вчитываться...
Code: Select all
START-APP: nncron.exe : power-off LOGGEDON? IF LOG: "D:\Backup\Cron\cron.log" "Admin user logged on<p>" ELSE LOG: "D:\Backup\Cron\cron.log" "Admin user logged off<p>" POWEROFF THEN ; power-off BYE

Это кусок кода из shutdown1? Если нет, то где здесь старт nnbackup с параметрами?

Можно чётко расписать алгоритм возможных вмешательств в процесс копирования, а то из-за расстановки знаков препинания до меня смысл пункта три ну не доходит, да и последующее уточнение тоже в голову не ложится?
Я не тупой. Хочется, чтобы jonimant разрисовал себе на листочке алгоритм (как по правильному и надо делать), а потом нам его уже текстом написал. Глядишь, в этот момент у него и сам код напишется без нашего участия...
elos
 
Posts: 664
Joined: Tue, 25 Apr 2006, 11:15

Re: Запуск скрипта до авторизации пользователя и выключение

Postby dothen » Sat, 10 Sep 2016, 17:57

elos wrote:На всякий случай - винда то какая?
jonimant wrote:(win 7)


elos wrote:Это кусок кода из shutdown1? Если нет, то где здесь старт nnbackup с параметрами?
Help :arrow: wrote:nnCron предоставляет возможность определять и выполнять форт-слова прямо из командной строки.
Сама задача:
Code: Select all
#( shutdown1
LoadProfile
User: "Administrator" Password:  "TestPWD" Domain: "WORKGROUP" LogonInteractive
Time: 10 5 * * * *
Action:
StartIn: "D:\Backup"
ShowNormal   NormalPriority
AsService
START-APPW: D:\Backup\dump.cmd 0

START-APP: nncron.exe : power-off LOGGEDON? IF LOG: "D:\Backup\Cron\cron.log" "Admin user logged on<p>" ELSE LOG: "D:\Backup\Cron\cron.log" "Admin user logged off<p>" POWEROFF THEN ; power-off BYE
)#

Возможно что существует какой-то другой способ, (кроме того который используется в LOGGEDON?)
из сервиса проверить осуществлен ли локальный логон.
Скорее всего Win7 для этого есть возможность которой не было в XP.

Смысл пункта три:
Компьютер должен сам выключатся сразу после резервного копирования,
только при условии что пользователь еще не залогинился в компьютер.
Если в это время (пока идет резервное копирование) пользователь залогинился,
тогда компьютер не должен сам выключатся.
jonimant wrote:чтобы пользователь не удивился почему компьютер сам выключился в самый подходящий момент
dothen
 
Posts: 184
Joined: Mon, 16 Mar 2015, 04:58

Re: Запуск скрипта до авторизации пользователя и выключение

Postby elos » Sun, 11 Sep 2016, 21:39

Ладно, пусть будет по вашему (последний код.). С авторизацией пусть успешно справились.
Не учли только следующую ситуацию. Идёт бекап (пользователь об этом, типа, знает, только вот не знает процент его выполнения). И тут пользователь по какой-то причине (забылся, типа) решил выключить комп или усыпить...

Тут, по идее, надо вешать вторую задачу, контролирующую некий флаг-файл об окончании бекапа (вернее) или дельту времени записи в лог бекапа (тут надо учитывать количество вывода, иначе рискуем выключиться до окончания бекапа), запрещающую выключение компа до окончания копирования. А в первой задаче вывесить на всякий случай HINT или MSG (кому что удобно) для напоминания пользователю о стартовавшем бекапе (что всё равно не гарантирует "забывчивость" пользователя). Хорошо бы дополнительно контролировать время последней активности клавиатуры или мыши (просмотр видео в пять утра будем учитывать?)...
Про влияние удалёнки пусть автор сам додумывается.

Резумирую. Задача 1 - старт бекапа. Задача 2 - контроль процесса бекапа с учётом логона и возможного выключения в процессе копирования.

Пожелание. В коде старайтесь просто записать полную командную строку для nnbackup с командами (если она достаточна короткая). Проще же всё прочитать в одном месте, чем прыгать по файлам (это не касается внешних файлов конфигурации или скриптов, использующихся для минимизации командных строк).

P.S. К задаче по идее не относится, но... Если комп домашний, то прикольно наверное слушать "завывание" кулера/ов в момент старта машины и далее (если это не nettop) в пять утра. Или комп в отдельном "кабинете" стоит? Некоторых, например, выводит из себя свист/зудение дросселей видеокарты (которые я практически не слышу из-за возраста вероятно).
elos
 
Posts: 664
Joined: Tue, 25 Apr 2006, 11:15


Return to nnCron forum (Russian)

Who is online

Users browsing this forum: Bing [Bot] and 5 guests

cron