[Problem] Dyn MOTD mit Crond funktioniert nicht

edgecrusher

Mitglied
Mitglied seit
4 Mai 2008
Beiträge
303
Punkte für Reaktionen
5
Punkte
18
Hallo,

das Problem hat sich leider doch nicht erledigt. Hatte zwischenzeitlich gefunden, das die Datei /etc/motd eine Text Datei ist und somit kein einlesen von Paramter unterstützt sonder nur den Text ausgibt. Ich hatte mir dann gedacht, gut machst du einfach einen symbolischen Link (/etc/motd -> /var/tmp/motd) und lässt den auf ein Shell Script in /var/ zeigen. Damit dieses Shell Script überhaupt vorhanden ist, lasse ich es beim Boot durch meine rc.custom anlegen

Anlegen der /var/tmp/motd Datei aus /etc/init.d/rc.custom
Code:
###########################################################################################
## build of MOTD
###########################################################################################
cat > /var/tmp/motd <<EOF
echo -e "
  ___  _ _            _____  ___ ______   _____  _____  _____  __  
 / _ \| (_)          |_   _|/ _ \|  _  \ |____ ||____ ||____ |/  | 
/ /_\ \ |_  ___ ___    | | / /_\ \ | | |     / /    / /    / / | | 
|  _  | | |/ __/ _ \   | | |  _  | | | |     \ \    \ \    \ \ | | 
| | | | | | (_|  __/  _| |_| | | | |/ /   ___/ / ___/ / ___/ /_| |_
\_| |_/_|_|\___\___|  \___/\_| |_/___/   \____/ \____/ \____/ \___/
"
echo "
+++++++++++++++++: System Data :+++++++++++++++++++
+ Hostname = \`uname -n\`
+ Address = 192.168.1.1
+ Kernel = \`uname -r\`
+ Uptime = \`uptime\`
+ CPU = PSB7200ZDW (AR7) @ 212MHz 
+ Memory = \`cat /proc/meminfo | grep MemTotal\`
+++++++++++++++++++++++++++++++++++++++++++++++++++
"
EOF

chmod +x /var/tmp/motd

Das Funktioniert und wird auch korrekt angelegt (die ausquotierten Kommands werden auch so korrekt geschrieben, damit sie erst beim Ausführen von /var/tmp/motd Werte zurückgegeben. Wenn ich allerdings per SSH auf die Box zugreife wird leider nicht die Datei /var/tmp/motd als Shell Script ausgeführt sondern stumpf als Text Datei ausgegeben

Code:
Using username "root".
Authenticating with public key "YYYYY@XXXXX"
Passphrase for key "YYYYY@XXXXX":
echo -e "
  ___  _ _            _____  ___ ______   _____  _____  _____  __
 / _ \| (_)          |_   _|/ _ \|  _  \ |____ ||____ ||____ |/  |
/ /_\ \ |_  ___ ___    | | / /_\ \ | | |     / /    / /    / / | |
|  _  | | |/ __/ _ \   | | |  _  | | | |     \ \    \ \    \ \ | |
| | | | | | (_|  __/  _| |_| | | | |/ /   ___/ / ___/ / ___/ /_| |_
\_| |_/_|_|\___\___|  \___/\_| |_/___/   \____/ \____/ \____/ \___/
"
echo "
+++++++++++++++++: System Data :+++++++++++++++++++
+ Hostname = `uname -n`
+ Address = 192.168.1.1
+ Kernel = `uname -r`
+ Uptime = `uptime`
+ CPU = PSB7200ZDW (AR7) @ 212MHz
+ Memory = `cat /proc/meminfo | grep MemTotal`
+++++++++++++++++++++++++++++++++++++++++++++++++++
"


BusyBox v1.8.2 (2009-04-22 13:54:57 CEST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

ermittle die aktuelle TTY
tty is "/dev/pts/0"
Console Ausgaben auf dieses Terminal umgelenkt

Führe ich das ganze direkt auf der Shell aus, funktionierts und mir werden bei jeden neuem auf /etc/motd das Script /var/tmp/motd ausgeführt und die Kommandos ausgeführt und mit den aktuellen (sich ändernen -> uptime) Werten gefüllt. Frage nach so viel langem Text. Wie biege ich das ganze so um das beim Login via SSH mit Werte präsentiert werden, statt der stumpfe Text des Scripts?

Wo ist hier mein Denkfehler?

Gruß
Edge
 
Zuletzt bearbeitet:
Es ist zum Mäusemelken. Ich habe meinen Versuch geändert. Aktuell lasse ich von meiner rc.custom ein Script update-motd in /var/tmp erstellen. Der Inhalt nach Erstellung sieht wie folgt aus

Code:
# cat update-motd
#! /bin/sh

echo -e "
  ___  _ _            _____  ___ ______   _____  _____  _____  __
 / _ \| (_)          |_   _|/ _ \|  _  \ |____ ||____ ||____ |/  |
/ /_\ \ |_  ___ ___    | | / /_\ \ | | |     / /    / /    / / | |
|  _  | | |/ __/ _ \   | | |  _  | | | |     \ \    \ \    \ \ | |
| | | | | | (_|  __/  _| |_| | | | |/ /   ___/ / ___/ / ___/ /_| |_
\_| |_/_|_|\___\___|  \___/\_| |_/___/   \____/ \____/ \____/ \___/
" > /var/tmp/motd
echo "
+++++++++++++++++: System Data :+++++++++++++++++++
+ Hostname = `uname -n`
+ Address = 192.168.1.1
+ Kernel = `uname -r`
+ Uptime = `uptime`
+ CPU = PSB7200ZDW (AR7) @ 212MHz
+ Memory = `cat /proc/meminfo | grep MemTotal`
+++++++++++++++++++++++++++++++++++++++++++++++++++
" >> /var/tmp/motd

Dann lege ich einen Cronjob an mit folgendem Inhalt

Code:
# crontab -c /var/tmp/crontabs/ -e
SHELL=/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/var/tmp

# motd

* * * * * root /var/tmp/update-motd

Die Rechte für update-motd habe ich auf 755 eingestellt. Vielleicht als wichtiger Hinweis, ich führe das ganze als User root aus. Er will aber nicht das Script update-motd ausführen. Der Cronjob wird zwar im Syslog angezeigt

Code:
Jan  1 01:41:01 alice cron.info crond[677]: crond: USER root pid 776 cmd root /var/tmp/update-motd

aber ebend das Script nicht ausgeführt. Warum funktioniert das nicht? hab bei google gesucht aber auf unzähligen Posts in Foren nicht meine Frage beantwortet gefunden

Gruß
Edge
 
Thema hat sich erledigt, wer den cronjob falsch anlegt, der braucht sich auch nicht zu wundern, das es nicht funktionier ;)
 
Kostenlos!

Statistik des Forums

Themen
248,869
Beiträge
2,303,396
Mitglieder
378,530
Neuestes Mitglied
fanboy