Выходной файл сценария задания cron короче, чем запуск сценария вручную

328
Kenny Thackwray

Запись в Crontab:

*/5 * * * * /usr/bin/sshlogin.expect '67d205f857a3.sn.mynetname.net' 'admin+tc1000h80w' 'PASSWORD' '/interface wireless snooper snoop wlan1' > /usr/bin/the_william_$(date +\%Y-\%m-\%d_\%H:\%M:\%S) 

Конец файла журнала скрипта с использованием cron - 37 строк в вывод

34 7C:67:A2:B2:E2:CE -88 13 0% 0% 0bps 35 7A:77:D4:6A:65:DA -77 32 0% 0% 0bps 36 FE:68:DA:DF:B3:7A -80 18 0% 0% 0bps 3 

Ручная команда:

sshlogin.expect '67d205f857a3.sn.mynetname.net' 'admin+tc1000h80w' 'PASSWORD' '/interface wireless snooper snoop wlan1 ' > the_william_`date +%Y%m%d_%H%M%S` 

Конец файла сценария с использованием ожидаемого сценария 953 строки

950 4C:DD:31:1F:C9:0B -75 23 0% 0% 0bps 951 DA:A1:19:CA:AF:19 -89 15 0% 0% 0bps 952 AA:3C:02:64:1C:FA -74 27 0% 0% 0bps 953 62:56:55:25:8B:EA -78 27 0% 0% 0bps 

Сценарий в основном открывает sshи запускает сканирование беспроводного интерфейса, но имеет длительное время ожидания 300 с, поэтому мы фиксируем 5 минут

sshlogin.expectСкрипт:

#!/usr/bin/expect  # usage sshsudologin.expect <host> <ssh user> <ssh password> <su user> <su password>  set timeout 60  spawn ssh -p 9922 [lindex $argv 1]@[lindex $argv 0]  expect "yes/no" { send "yes\r" expect "*?assword" { send "[lindex $argv 2]\r" } } "*?assword" { send "[lindex $argv 2]\r" } sleep 1 expect "" { send "\r" } expect " >" { send "[lindex $argv 3]\r" } sleep 1 expect "" { send "s" } sleep 300 expect "" { send "q" } sleep 1 expect "" { send "quit\r" } interact 
0
Добро пожаловать в Супер пользователя. Я улучшил форматирование вашего вопроса. Пожалуйста, проверьте, все ли в порядке. Вы также должны [отредактировать] и добавить явный вопрос. Пока я не знаю, «почему»? или "как заставить` cron` работать как `ожидать`?" или "как заставить` ожидать` работать как `cron`?" или что. Кроме того: действительно ли урезана 37-я строка первого журнала, так что в ней есть единственная «3»? (Я прошу просто убедиться, что это не ошибка при копировании и вставке). Kamil Maciorowski 5 лет назад 1
Вы уверены (и как вы знаете), что вы открыли первый журнал после того, как инструмент действительно закончил? Вы уверены (и откуда вы знаете) процесс `ssh` не был прерван по какой-либо причине? Этот 37-строчный журнал выглядит как неполный (пока) или обрезанный. Kamil Maciorowski 5 лет назад 0
см. [скрипт bash + Expect не работает должным образом в crontab] (https://stackoverflow.com/questions/52198987/) pynexj 5 лет назад 0
также взгляните на [* sexpect *] (https://github.com/clarkwang/sexpect), с помощью которого вы можете писать * Expect * сценарии только с шелл-кодом. pynexj 5 лет назад 0
Пока я не знаю, «почему»? или "как заставить cron работать как надо?" или "как заставить работать как cron?" или что. Кроме того: действительно ли урезана 37-я строка первого журнала, так что в ней есть единственная 3? (Я прошу просто убедиться, что это не ошибка при копировании и вставке) Kenny Thackwray 5 лет назад 0
Я использую cron для запуска ожидаемого скрипта каждые 5 минут - ожидаемый скрипт работает нормально (без cron) и журнал не усекается - при использовании cron файл журнала усекается Kenny Thackwray 5 лет назад 0
-rw-r - r-- 1 корневой корень 1108 5 ноября 08:25 the_william_2018-11-05_08: 25: 01 -rw-r - r-- 1 корневой корень 1149943 5 ноября 08:28 the_williamthe_william_2018-11-05_08 : 23: 39 - Первый файл - это файл, созданный «cron», а второй - при запуске сценария ожидаемого - обратите внимание на разницу в размере Kenny Thackwray 5 лет назад 0
Вместо того, чтобы объяснять или добавлять новую информацию в комментариях, пожалуйста [отредактируйте] вопрос. Комментарии не являются частью вопросов; Ваш вопрос должен быть автономным. Kamil Maciorowski 5 лет назад 0
Я не думаю, что это имеет какое-либо отношение к ожиданиям. Интересно, если удаленная машина ведет себя по-другому, когда нет tty. Попробуйте `ssh -t ...` или `ssh -tt ...` и посмотрите, имеет ли это значение. glenn jackman 5 лет назад 0

0 ответов на вопрос