Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Windows Server 2008/2008 R2 (http://forum.oszone.net/forumdisplay.php?f=97)
-   -   [решено] Планировщик, кто нить объясните что это за зверь? (http://forum.oszone.net/showthread.php?t=325125)

ev83gen 22-03-2017 13:10 2722029

Планировщик, кто нить объясните что это за зверь?
 
На win 2003 есть скрипт, скомпилированный в megavigr.exe. рядом лежит файл megavigr.ini. Суть такая: ночью через планировщик запускается megavigr.exe, он берет список баз, пути к ним и пароли из megavigr.ini. Все работает как часы.
Я хочу перенести все на win 2008 R2, соответственно в обоих файлах все поправил, закидываю в планировщик и тишина, запускаю руками все работает, в логах запись:

Код:

2017-03-22 12:46:09 : MegaVigr start at 22.03.2017 12:46:09
2017-03-22 12:46:09 : kolvo is 49
2017-03-22 12:46:09 : freespace is 1024
2017-03-22 12:46:09 : starting  1 job of 49
2017-03-22 12:46:09 :  job 1, create C:\Users\454B~1.TAI\AppData\Local\Temp\2\megavigr.prm
2017-03-22 12:46:09 :  job 1, write C:\Users\454B~1.TAI\AppData\Local\Temp\2\megavigr.prm
2017-03-22 12:46:09 :  job 1, close C:\Users\454B~1.TAI\AppData\Local\Temp\2\megavigr.prm
2017-03-22 12:46:09 :  job 1, make dir for vigruzka c:\megavigr\zip\2017_12\
2017-03-22 12:46:09 :  job 1, check free space on drive c:\
2017-03-22 12:46:09 :  job 1, check free space on drive c:\ success!
2013-08-26 06:04:28 :  job 1, write registry base O:\1c_base\Buh.buh\, name Buh
2013-08-26 06:04:28 :  job 1, start vigruzka
2013-08-26 06:05:18 :  job 1, vigruzka over
2013-08-26 06:05:18 :  job 1, delete registry base O:\1c_base\Buh.buh\, name Buh
2013-08-26 06:05:18 :  job 1, save log to o:\megavigr\log\Buh.txt

В планировщике нажимаю на задание правой кнопкой ->выполнить и ничего.
Иду в логи и вижу:
Код:

2017-03-22 14:42:36 : MegaVigr start at 22.03.2017 14:42:36
2017-03-22 14:42:36 : kolvo is 0
2017-03-22 14:42:36 : freespace is 1024

Получается он не может прочесть строку количество и пишет 0 или вообще файл ini не видит, но почем ручками работает?
В планировщике ставил галку и для зарегистрированных и не зависимо от регистрации, галку с высшими привилегиями тоже ставил.
На форумах находил информацию что иногда из под прав доменного Админа отказывается работать, создал пользователя с правами админа, дал на папки, где лежит скрипт, полные права еще явно. Результата нет.

начало кода скрипта(потому как далее не идет):

Код:

$year=@YEAR
$week=_WeekNumberISO(@YEAR,@MON,@MDAY)
if $week < 10 and stringlen($week)=1 then $week='0' & $week
$day=@WDAY-1
if $day=0 then $day=7
$Year = @YEAR
$kolvo=iniread("megavigr.ini","settings","kolvo","0")
$freespace=iniread("megavigr.ini","settings","freespace","1024")
$syslogfile=iniread("megavigr.ini","settings","syslogfile","c:\1.log")
_FileWriteLog($syslogfile,"MegaVigr start at " & _Now())
_FileWriteLog($syslogfile,"kolvo is " & $kolvo)
_FileWriteLog($syslogfile,"freespace is " & $freespace)
$default_name=iniread("megavigr.ini","0","name","pusto")
$default_path=iniread("megavigr.ini","0","path","pusto")
$default_user=iniread("megavigr.ini","0","user","user")
$default_pass=iniread("megavigr.ini","0","pass","pass")
$default_vigrpath=iniread("megavigr.ini","0","vigrpath","pusto")
$default_vigrname=iniread("megavigr.ini","0","vigrname","pusto")
$default_logneed=iniread("megavigr.ini","0","logneed","1")
$default_logpath=iniread("megavigr.ini","0","logpath","pusto")
for $i=1 to $kolvo
  _FileWriteLog($syslogfile,"starting  " & $i & " job of " & $kolvo )
  $v_name=iniread("megavigr.ini",$i,"name",$default_name)
  $v_path=iniread("megavigr.ini",$i,"path",$default_path)
  $v_user=iniread("megavigr.ini",$i,"user",$default_user)
  $v_pass=iniread("megavigr.ini",$i,"pass",$default_pass)
  $v_vigrpath=iniread("megavigr.ini",$i,"vigrpath",$default_vigrpath)
  $v_vigrname=iniread("megavigr.ini",$i,"vigrname",$default_vigrname)
  $v_logneed=iniread("megavigr.ini",$i,"logneed",$default_logneed)
  $v_logpath=iniread("megavigr.ini",$i,"logpath",$default_logpath)
  if $v_name = $default_name Then
                _FileWriteLog($syslogfile," job " & $i & " have bad name " & $v_name ) 
                ContinueLoop
          Else
  EndIf
  if $v_path = $default_path Then
          _FileWriteLog($syslogfile," job " & $i & " have bad path " & $v_path ) 
          ContinueLoop
  Else
  EndIf
  if $v_user = "" Then $v_user=$default_user
  if $v_user = "" Then
          _FileWriteLog($syslogfile," job " & $i & " have bad user " & $v_user ) 
          ContinueLoop
  Else
  EndIf
  if $v_pass = "" Then $v_pass=$default_pass
  if $v_pass = "" Then
          _FileWriteLog($syslogfile," job " & $i & " have bad pass " & $v_pass ) 
          ContinueLoop

Вот часть файла ini:
Код:

[settings]
kolvo = 49
freespace=1024
syslogfile=c:\1.log
[0]
name=дефолтовые настройки
path=
user=Администратор
pass=11111111
vigrpath=c:\megavigr\zip\
vigrname=
logneed=1
logpath=c:\megavigr\log\
[1]
name=Бухгалтерия
path=O:\1c_base\Buh.buh\
user=
pass=
vigrpath=
vigrname=Buh_buh
logneed=
logpath=

Что не так с этим планировщиком, подскажите где я не прав, а то я к врачу пойду скоро!!

Iska 22-03-2017 16:17 2722111

Начните с проверки существования файла megavigr.ini. Он у Вас по умолчанию ищется в текущем каталоге. Добавьте в код отображение текущего каталога и сравните показания на 2003 и 2008 R2 серверах из-под планировщика.

ev83gen 23-03-2017 08:21 2722312

Ну файл то существует, я же его туда положил, да и при запуске ручками все отрабатывает. Но идею понял, попробую.

cameron 23-03-2017 09:03 2722320

disk O: планировщику доступен?
для тестов сделайте c:\scripts\ и переведите все пути туда, потому уже экспериментируйте.

Iska 23-03-2017 09:32 2722329

Цитата:

Цитата ev83gen
Ну файл то существует, я же его туда положил, да и при запуске ручками все отрабатывает. »

Судя по коду, Вы просто рассчитываете на то, что он будет наличествовать в текущем каталоге. Судя по логу, Ваши надежды не оправдываются. Вывод?

Цитата:

Цитата ev83gen
Но идею понял, попробую. »

Опробуйте. Начните с проверки текущего каталога, выведете его полный путь в лог. Затем проверьте есть ли в текущем каталоге данный файл, выведете результат проверки в лог. Сразу станет понятнее.

ev83gen 23-03-2017 17:33 2722438

Так, добавил в скрипт пару строчек:

Код:

#include <File.au3>
#include <Date.au3>
$year=@YEAR
$week=_WeekNumberISO(@YEAR,@MON,@MDAY)
if $week < 10 and stringlen($week)=1 then $week='0' & $week
$day=@WDAY-1
if $day=0 then $day=7
$Year = @YEAR
$kolvo=iniread("megavigr.ini","settings","kolvo","0")
$freespace=iniread("megavigr.ini","settings","freespace","1024")
$syslogfile=iniread("megavigr.ini","settings","syslogfile","c:\1.log")
$filelist = _FileListToArray(@ScriptDir, "*", 1)
_FileWriteFromArray(@ScriptDir & "\filelist.txt", $filelist)

_FileWriteLog($syslogfile,"MegaVigr start at " & _Now())
_FileWriteLog($syslogfile,"kolvo is " & $kolvo)


вот результат filelist.txt:

Код:

3
megavigr.au3
megavigr.exe
megavigr.ini

а в файле 1.log все тоже:

Код:

2017-03-23 19:26:43 : MegaVigr start at 23.03.2017 19:26:43
2017-03-23 19:26:43 : kolvo is 0
2017-03-23 19:26:43 : freespace is 1024
2017-03-23 19:30:27 : MegaVigr start at 23.03.2017 19:30:27
2017-03-23 19:30:27 : kolvo is 0
2017-03-23 19:30:27 : freespace is 1024


Получается система видит файл *.ini

А не может быть дело в кодировке что ли? Я просто не понимаю, почему планировщик так влияет на скрипт...

ev83gen 24-03-2017 11:28 2722592

Все проблему решил, в планировщике обязательно нужно рабочую папку указывать и все работает, всем спасибо кто откликнулся.


Время: 17:17.

Время: 17:17.
© OSzone.net 2001-