Я не знаю то, что Вы подразумеваете под "частным" VLAN, но Linux делает VLAN. ip
команда от iproute2 может настроить их. У Вас действительно должны быть NIC и драйвер, который поддерживает его, но большинство делает в эти дни.
Добавить cd /home/xxxx/Documents/Scripts/
если Вы хотите, чтобы Ваше задание работало в том каталоге. Нет никакой причины, почему крон изменился бы на тот конкретный каталог. Крон выполняет Ваши команды в Вашем корневом каталоге.
Что касается ssmtp
, это не могло бы быть в Вашем значении по умолчанию PATH
. Путь крона по умолчанию является зависящим от реализации, так проверьте свою страницу справочника, но по всей вероятности ssmtp
находится в /usr/sbin
который не находится в Вашем значении по умолчанию PATH
, только корень.
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
15 7 * * * cd /home/xxxx/Documents/Scripts && ./email_ip_script.sh
Отвечать на вопрос 1: если Вы работаете crontab -e
как Ваш собственный пользователь задания будут запланированы в crontab того пользователя и будут таким образом работать с полномочиями того пользователя.
Но необходимо полагать, что задания будут работать в неинтерактивной оболочке, означающей, что $PATH мог бы отличаться от того, который Вы имеете при запущении скрипта из командной строки.
Лучше всегда использовать полные пути в сценариях, особенно если Вы планируете запланировать их через в/крон и т.д.
Я также рекомендовал бы использовать полные пути для всех файлов для предотвращения точно проблем, которые Вы видите.
Для предотвращения условий состязания и других проблем безопасности, необходимо также использовать mktemp
для проверки файл, который Вы читаете, не изменяется ничем вне Вашего сценария.
Таким образом, я изменил бы сценарий на что-то как:
vIP_ADDR="`curl automation.whatismyip.com/n09230945.asp`"
echo "$vIP_ADDR"
mail_msg=`/bin/mktemp`
/bin/sed "s/IPADDR/$vIP_ADDR/g" /home/xxxx/Documents/Scripts/template.txt > $mailmsg
/path/to/ssmtp XXXXX@gmail.com < $mailmsg
/bin/rm $mailmsg
cron
выполнения запланированные задания каждого пользователя как тот пользователь. Это должно быть достаточно, чтобы мы решили, что это запускает Ваши скрипты относительно Вашего корневого каталога.
При необходимости в нем для выполнения от другого местоположения, просто используйте cd
в Вашем сценарии для движения в то местоположение.
ssmtp
находится, вероятно, не в cron
ПУТЬ по умолчанию (это установлено быть очень узким дизайном на большинстве платформ). Можно или указать полный путь к ssmtp
в Вашем сценарии, или можно явно установить ПУТЬ в a) Вашем crontab файле, который будет доступен всем Вашим сценариям, или b) в каждом сценарии.
Если ваше задание cron является сценарием bash, следующее будет компакт-диском с местоположением вашего сценария (при условии, что вы используете абсолютный путь в определении вашего cron) :
cd "$(dirname "$0")";
El directorio de trabajo predeterminado para cron
al ejecutar el trabajo es el directorio de inicio, normalmente /home/your-user-name
.
cron
имейте свой собственныйPATH
или я могу проверить своего пользователяPATH
? Я настроил ssmtp, чтобы иметь свой собственныйuser
иwheel
разрешение думая это позволило бы любому использовать его (включая крон). Если помогает, что я нахожусь на Понятном CENTOS 6.2 – ProfessionalAmateur 18.05.2012, 18:51ssmtp
, но что Ваше задание крона не находит исполняемый файл названнымssmtp
потому что это не находится в ВашемPATH
. Нет такой вещи как “Ваш пользовательPATH
”; это - установка для каждого процесса, не установка в расчете на пользователя. Можно установить путь для всех заданий крона путем помещения aPATH=…
строка в Вашем crontab. А-ч – Gilles 'SO- stop being evil' 19.05.2012, 11:45´which ssmtp´ ...
– Fredrick Gauss 09.11.2017, 12:40type ssmtp
– Gilles 'SO- stop being evil' 09.11.2017, 23:54