- Mitglied seit
- 15. Mai 2008
- Beiträge
- 21.900
- Punkte für Reaktionen
- 14
- Punkte
- 0
sooo ... ich habe das crond-Logbuch mit eingebaut (/var/log/cron.log). Wie alle Logbücher kann es grenzenlos wachsen und muss daher von Zeit zu Zeit gekürzt bzw. gelöscht werden. Nicht traurig sein, wenn da kein Datum/Uhrzeit drin ist - das ist halt in dem mit der DS ausgelieferten crond nicht vorgesehen.
Der Fehler mit den ' und " dürfte verbessert sein. Allerdings ist bei Sonderzeichen, Umlauten immer eine Kontrolle der /etc/crontab via telnet sinnvoll. Wenn irgendeine crontab-Zeile eine Macke hat, kann es sein, dass der crond nichts ausführt!!! Dran denken, dass ich hier den UTF-8 Zeichensatz im HTML entgegennehme (wie Samba), und das das nicht der Zeichensatz im telnet ist (Umlaute-Problematik).
Daneben gibt es noch ein paar Überlegungen, die man für sich verinnerlichen sollte: Der crond kann auch ohne "Tabs" die Zeilen interpretieren, aber beim Systemstart schau die DS mit ein paar Programmen auf die /etc/crontab und schmeißt alles raus, was nicht ok ist, z.B. auch Zeilen ohne Tabs. Warum? Weil Downloader, zeitgesteuerte Sicherung usw. ja funktionieren sollten und das möglicherweise durch falsche Benutzereintragungen gefährdet würde. Das ist auch der Grund, warum man so wenig Benutzer-Oberflächen zur crontab findet, weil der DAU immer ein Risiko ist. Aber mich juckt das nicht, wenn ihr eure Systeme in Grund und Boden fahrt ... , macht immer schön eine Sicherung, dann ist es nie wirklich schlimm, denn das neue Einspielen der Firmware geht ja fix . Ich hab überlegt, ob ihr es von Vorteil anseht, wenn bestimmte Dateiendungen (.mp3, .wav, .avi usw) nicht zulässig sind ...
Der Fehler mit den ' und " dürfte verbessert sein. Allerdings ist bei Sonderzeichen, Umlauten immer eine Kontrolle der /etc/crontab via telnet sinnvoll. Wenn irgendeine crontab-Zeile eine Macke hat, kann es sein, dass der crond nichts ausführt!!! Dran denken, dass ich hier den UTF-8 Zeichensatz im HTML entgegennehme (wie Samba), und das das nicht der Zeichensatz im telnet ist (Umlaute-Problematik).
Daneben gibt es noch ein paar Überlegungen, die man für sich verinnerlichen sollte: Der crond kann auch ohne "Tabs" die Zeilen interpretieren, aber beim Systemstart schau die DS mit ein paar Programmen auf die /etc/crontab und schmeißt alles raus, was nicht ok ist, z.B. auch Zeilen ohne Tabs. Warum? Weil Downloader, zeitgesteuerte Sicherung usw. ja funktionieren sollten und das möglicherweise durch falsche Benutzereintragungen gefährdet würde. Das ist auch der Grund, warum man so wenig Benutzer-Oberflächen zur crontab findet, weil der DAU immer ein Risiko ist. Aber mich juckt das nicht, wenn ihr eure Systeme in Grund und Boden fahrt ... , macht immer schön eine Sicherung, dann ist es nie wirklich schlimm, denn das neue Einspielen der Firmware geht ja fix . Ich hab überlegt, ob ihr es von Vorteil anseht, wenn bestimmte Dateiendungen (.mp3, .wav, .avi usw) nicht zulässig sind ...
Rich (BBCode):
<?php
if ($_REQUEST['action'] == 'save') {
$out='';
for($r=1;$r<=$_REQUEST['rows'];++$r)
if ($_REQUEST['r'.$r.'c0']!='') for($c=0;$c<7;++$c) $out.=$_REQUEST['r'.$r.'c'.$c].($c<6?chr(9):chr(10));
file_put_contents('/etc/crontab', stripslashes($out));
exec('killall crond;crond -l 8 -L /var/log/cron.log');
}
$filearray=file('/etc/crontab');
$_REQUEST['action'] == '';
$l=isset($_REQUEST['lines'])?$_REQUEST['lines']:20;
?>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>cronjobs</title>
<style>body,input{font:12px Arial;margin-right:1px;margin-bottom:1px}h3{font-family:Arial}
body{background-color:#ddf}pre{font-size:10px;padding:2px;background-color:#eef}</style>
<script>
function mark(r) {
var e=document.getElementsByName(r+'c0')[0];
if (e.value.charAt(0)=='#')
for (var i=0;i<7;++i) document.getElementsByName(r+'c'+i)[0].style.color='#444';
else
for (var i=0;i<7;++i) document.getElementsByName(r+'c'+i)[0].style.color='#090';
}
</script>
</head><body><h3>CronJobs</h3>
<form method="post" action="cronjobs.php">
<input type="hidden" id="action" name="action" value="">
<?php
$r=0;
foreach($filearray as $rec) {
$r++; $c=0;$f=explode(chr(9),htmlspecialchars($rec));
print '<input title="*|0..59: 8 1,3,5 2-5 * */2" name="r'.$r.'c0" type="text" size="8" '.($r==1?'readonly':'').' value="'.$f[0].'"/>';
print '<input title="*|0..23: 8 1,3,5 2-5 * */2" name="r'.$r.'c1" type="text" size="7" '.($r==1?'readonly':'').' value="'.$f[1].'"/>';
print '<input title="*|1..31: 8 1,3,5 2-5 * */2" name="r'.$r.'c2" type="text" size="7" '.($r==1?'readonly':'').' value="'.$f[2].'"/>';
print '<input title="*|1..12: 8 1,3,5 2-5 * */2" name="r'.$r.'c3" type="text" size="7" '.($r==1?'readonly':'').' value="'.$f[3].'"/>';
print '<input title="*|0..7: so=0/7 sa=6" name="r'.$r.'c4" type="text" size="7" '.($r==1?'readonly':'').' value="'.$f[4].'"/>';
print '<input name="r'.$r.'c5" type="text" size="7" '.($r==1?'readonly':'').' value="'.$f[5].'"/>';
print '<input name="r'.$r.'c6" type="text" size="40" '.($r==1?'readonly':'').' value="'.$f[6].'"/>';
if ($r>1) {
print '<script>mark("r'.$r.'")</script>';
?>
<input type="button" value="X" title="delete"
onclick="for (var i=0;i<7;++i) document.getElementsByName('r<?php print $r ?>c'+i)[0].value=''"/>
<input type="button" value="#" title="activate / deactivate"
onclick="var v=document.getElementsByName('r<?php print $r ?>c0')[0];
if (v.value.charAt(0)!='#') v.value='#'+v.value;else v.value=v.value.substring(1); mark('r<?php print $r ?>')"/>
<?php }
print '<br/>';
}
$rmax=2+$r++;
for($r;$r<=$rmax;$r++) {
print '<input title="*|0..59: 8 1,3,5 2-5 * */2" name="r'.$r.'c0" type="text" size="8" value=""/>';
print '<input title="*|0..23: 8 1,3,5 2-5 * */2" name="r'.$r.'c1" type="text" size="7" value=""/>';
print '<input title="*|1..31: 8 1,3,5 2-5 * */2" name="r'.$r.'c2" type="text" size="7" value=""/>';
print '<input title="*|1..12: 8 1,3,5 2-5 * */2" name="r'.$r.'c3" type="text" size="7" value=""/>';
print '<input title="*|0..7: so=0/7 sa=6" name="r'.$r.'c4" type="text" size="7" value=""/>';
print '<input name="r'.$r.'c5" type="text" size="7" value=""/>';
print '<input name="r'.$r.'c6" type="text" size="40" value=""/>';
?>
<input type="button" value="X" title="delete"
onclick="for (var i=0;i<7;++i) document.getElementsByName('r<?php print $r ?>c'+i)[0].value=''"/>
<input type="button" value="#" title="activate / deactivate"
onclick="var v=document.getElementsByName('r<?php print $r ?>c0')[0];
if (v.value.charAt(0)!='#') v.value='#'+v.value;else v.value=v.value.substring(1); mark('r<?php print $r ?>')"/><br/>
<?php } ?>
<input type="hidden" name="rows" value="<?php print --$r ?>"/>
<input type="button" value="save /etc/crontab & restart crond" style="margin-top:6px"
onclick="document.getElementById('action').value='save';submit()"/>
<input type="button" value="re-read /etc/crontabs & /var/log/cron.log" style="margin-top:6px" onclick="submit()"/>
Lines:
<input type="text" value="<?php print $l ?>" name="lines" style="margin-bottom:-1px;height:18px;width:30px"/><br/>
</form><pre>
<?php
system('tail -'.$l.' /var/log/cron.log');
?>
</pre></body></html>
Zuletzt bearbeitet: