1

Здравствуйте.
Есть скрипт написанный на expect для копирования с цисок ранов на тфтп сервер. Когда запускаю вручную из баша и из под рута, то скрипт работает. Ставлю его в cron.

/var/spool/cron/root
[root@localhost ~]# crontab -l
1 * * * * /home/Cisco_Backup/script.exp

Часть лога.

Apr 28 15:01:01 localhost crond[13535]: (root) CMD (run-parts /etc/cron.hourly)
Apr 28 15:01:01 localhost crond[13536]: (root) CMD (/home/Cisco_Backup/script.exp)
Apr 28 15:22:42 localhost crontab[13589]: (root) LIST (root)

Часть скрипта:

#!/usr/bin/expect -f 

2

из баша как запускаете?

3

Ну всмысле из консоли. Тупо ввожу /home/Cisco_Backup/script.exp и скрипт исполняется.

4

кстати, я не вижу признаков того, что скрипт не запускается
быть может, он запускается, но не отрабатывает? тогда другой разговор

5

Просто если я его запускаю из консоли, он отрабатывается все норм!
Вот и сижу гадаю.. почему из крона не родит...

6

покажите хоть скрипт

7

#!/usr/bin/expect -f

set force_conservative 0  ;# set to 1 to force conservative mode even if
                          ;# script wasn't run conservatively originally


set dates [lindex $argv 0]

if {$force_conservative} {
        set send_slow {1 .1}
        proc send {ignore arg} {
                sleep .1
                exp_send -s -- $arg
        }
}



set timeout -1
spawn ssh логин@ипка
match_max 100000
expect -exact "\r\r
-----------------------------------------------------------------------\r
Cisco Router and Security Device Manager (SDM) is installed on this device. \r
This feature requires the one-time use of the username \"cisco\" \r
with the password \"cisco\". The default username and password have a privilege level of 15.\r
\r
Please change these publicly known initial credentials using SDM or the IOS CLI. \r
Here are the Cisco IOS commands.\r
\r
username <myuser>  privilege 15 secret 0 <mypassword>\r
no username cisco\r
\r
Replace <myuser> and <mypassword> with the username and password you want to use. \r
\r
For more information about SDM please follow the instructions in the QUICK START \r
GUIDE for your router or go to http://www.cisco.com/go/sdm \r
-----------------------------------------------------------------------\r
Password: "
send -- "пароль\r"
expect -exact "\r
\r
nizh#"
send -- "copy run tftp://ипка/$dates"
expect -exact "copy run tftp://ипка/$dates"
send -- "\r"
expect -exact "\r
Address or name of remote host \[ип\]? "
send -- "\r"
expect -exact "\r
Destination filename \[$dates\]? "
send -- "\r"
expect -exact "\r
!!\r
18273 bytes copied in 0.628 secs (29097 bytes/sec)\r
nizh#"
send -- "exit\r"
expect eof

8

А Сам скрипт который я запускаю и который в кроне вот:
/home/Cisco_Backup/script.exp

#!/bin/bash -x
/home/Cisco_Backup/cisco.exp `date +%Y-%m-%d_%H-%M-%S.%N`

9

я если запустить напрямую скрипт cisco.exp, а не script.exp?

10

Munsera, а если в конце строчки в crontab -e написать

1 * * * * /home/Cisco_Backup/script.exp 2>&1 >>/var/log/siska_backup.log

?

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

11

Доктор, спасибо, что пришел ab он тебя больше проку будет
да и не дистроспецифично это все

12

Hrafn, Если напрямую запустить, то скрипт тоже отрабатывается. Только переменная не присваивается и все) Пишется как есть)

drBatty, Прописал, но только почему-то файл siska_backup.log не создался((

13

В конце

1 * * * * /home/Cisco_Backup/script.exp 2>&1 >>/var/log/siska_backup.log

есть перенос строки?
Может поможет добавление пустой строки в конце?

14

Munsera, учтите, этот скрипт выполняется только в первую минуту каждого часа. ждали?

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

15

Ребята, большое спасибо за ответы и помостчь!!!

Посмотрел Лог и понял что крон как-то неправильно его обрабатывает. Заменил

/home/Cisco_Backup/cisco.exp `date +%Y-%m-%d_%H-%M-%S.%N`

на

/home/Cisco_Backup/cisco.exp `date +%Y-%m-%d

И все заработало!!!
Большое спасибо!!!

16 (29.04.2011 14:29:28 отредактировано drBatty)

Munsera пишет:

Посмотрел Лог и понял что крон как-то неправильно его обрабатывает. Заменил

/home/Cisco_Backup/cisco.exp `date +%Y-%m-%d_%H-%M-%S.%N`

на

/home/Cisco_Backup/cisco.exp `date +%Y-%m-%d

И все заработало!!!

потому-что в целях безопасности crond использует стандартную date. А в POSIX нет %H - это гнутое расширение. Забыл я вам об этом сказать сразу...

ЗЫЖ поправочка:

`date' conversion specifiers related to times.

`%H'
     hour (`00'...`23')

`%I'
     hour (`01'...`12')

`%k'
     hour (` 0'...`23').  This is a GNU extension.

`%l'
     hour (` 1'...`12').  This is a GNU extension.

`%M'
     minute (`00'...`59')

`%N'
     nanoseconds (`000000000'...`999999999').  This is a GNU extension.

`%p'
     locale's equivalent of either `AM' or `PM'; blank in many locales.
     Noon is treated as `PM' and midnight as `AM'.

`%P'
     like `%p', except lower case.  This is a GNU extension.

`%r'
     locale's 12-hour clock time (e.g., `11:11:04 PM')

`%R'
     24-hour hour and minute.  Same as `%H:%M'.  This is a GNU
     extension.

`%s'
     seconds since the epoch, i.e., since 1970-01-01 00:00:00 UTC.
     Leap seconds are not counted unless leap second support is
     available.  *Note %s-examples::, for examples.  This is a GNU
     extension.

наносекунд нет в стандарте.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

17

Ок.
Буду знать.
Спасибо!

18

вот подробный мануал на вашу систему: info coreutils 'date invocation'

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)