Problema: reikia paleisti komandą sudo ifconfig eth0 down
Kiekvieną kartą, kai įsijungiu kompą ir pasileidžiu Ubuntu Linux. Sprendimas turėtų būti kitoks, reiktų aiškintis, kodėl užklausos į internetą route’inamos į eth0 interfeisą, o ne į wlan0 ir panašiai. Tačiau kaip laikinas workaround’as bus crontab panaudojimas tos komandos paleidimui kaskart įsijungus Ubuntu.
Dabar problema, kaip paleisti komandą root teisėmis crontab’e.
Kaip rašo forumuose naudoti sudo paprasto vartotojo crontab’e yra nepatartina. Todėl naudoju root user’io crontab. sudo crontab -e
Atidaro root vartotojo crontab’ą. Ten pridedu eilutę: ifconfig eth0 down
Perkraunu kompą, komanda nepaleidžiama, nežinau, kodėl.
Todėl pabandžiau paieškoti linux log’uose ko nors apie crontab veiklą.
dmesg | grep -i cron
dmesg’e jokios info apie crontab nelogg’inama.
Pasigoogl’inau ir radau, kad reikalingi log’ai yra /var/log/syslog. cat /var/log/messages | grep cron
Sep 20 11:57:52 Ubuntu anacron[5254]: Job `cron.daily' terminated
Sep 20 11:57:52 Ubuntu anacron[5254]: Normal exit (1 job run)
Sep 20 12:13:32 Ubuntu anacron[25787]: Anacron 2.3 started on 2015-09-20
Sep 20 12:13:32 Ubuntu anacron[25787]: Normal exit (0 jobs run)
Sep 20 12:24:45 Ubuntu anacron[26096]: Anacron 2.3 started on 2015-09-20
Sep 20 12:24:45 Ubuntu anacron[26096]: Normal exit (0 jobs run)
Sep 20 12:24:45 Ubuntu anacron[26152]: Anacron 2.3 started on 2015-09-20
Sep 20 12:24:45 Ubuntu anacron[26152]: Normal exit (0 jobs run)
Sep 20 13:17:02 Ubuntu CRON[26437]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Sep 20 14:02:44 Ubuntu crontab[28275]: (root) BEGIN EDIT (root)
Sep 20 14:03:43 Ubuntu crontab[28275]: (root) REPLACE (root)
Sep 20 14:03:43 Ubuntu crontab[28275]: (root) END EDIT (root)
Sep 20 14:05:01 Ubuntu anacron[1016]: Anacron 2.3 started on 2015-09-20
Sep 20 14:05:01 Ubuntu cron[965]: (CRON) INFO (pidfile fd = 3)
Sep 20 14:05:01 Ubuntu anacron[1016]: Normal exit (0 jobs run)
Sep 20 14:05:01 Ubuntu cron[1071]: (CRON) STARTUP (fork ok)
Sep 20 14:05:01 Ubuntu cron[1071]: (CRON) INFO (Running @reboot jobs)
Sep 20 14:05:01 Ubuntu CRON[1115]: (root) CMD (ifconfig eth0 down)
Sep 20 14:05:01 Ubuntu CRON[1097]: (CRON) info (No MTA installed, discarding output)
Sep 20 14:05:11 Ubuntu anacron[1870]: Anacron 2.3 started on 2015-09-20
Sep 20 14:05:11 Ubuntu anacron[1870]: Normal exit (0 jobs run) Matau, kad komanda vykdoma, bet, kodėl ji nesuveikia. Log’e matau, pranešimą, kad (CRON) info (No MTA installed, discarding output)
Pasigoogl’inu, kas yra MTA.
MTA – message transfer agent, yra naudojamas išsiųsti tokius log’us į elektroninį paštą. Forumuose rašo, kad mano naudojama Ubuntu OS neturi tokio mail serviso įrašyto by default.
Įsirašau forumuose pasiūlytą package’ą. sudo aptitude install postfix
Instaliacijos metu paprašo pasirinkti vieną iš variantų, kur bus siunčiamas mail’as.
Pasirenku local.
Perkraunu kompą, žiūriu į /var/log/messages, matau tą patį, išskyrus, kad neberodo pranešimo dėl MTA.
Dabar, kai jau turim MTA agentą, postfix įrašytą, tai galime pažiūrėti ir kas buvo išsiųsta paštu. sudo tail /var/mail/root
Content-Type: text/plain; charset=ANSI_X3.4-1968
X-Cron-Env:
X-Cron-Env:
X-Cron-Env:
X-Cron-Env:
Message-Id:
Date: Sun, 20 Sep 2015 14:56:24 +0300 (EEST)
/bin/sh: 1: ifconfig: not found (prieš tai nebuvo tokios direktorijos /var/mail/root, ji atsirado, tik suinstaliavus postfix ir kai atsirado pirmasis mail pranešimas, kurį jis atsiuntė į šią direktoriją).
Matom, kad ifconfig: not found.
Pasigooglinam sprendimą, randam, kad reikia naudoti /sbin/ifconfig. Pataisom crontab įrašą:/sbin/ifconfig eth0 down
Perkraunam kompą. Valio, veikia. /var/log/messages įrašai nepasikeitę, /var/mail/root naujų pranešimų nerasta, tai reiškia, kad komanda buvo įvykdyta, komandos output’o nebuvo, taip pat ir klaidos pranešimų nebuvo.