Auteur Topic: Cronjobs via DSM  (gelezen 15950 keer)

Offline wizjos

  • Administrator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 121
  • -Ontvangen: 179
  • Berichten: 1.984
Cronjobs via DSM
« Gepost op: 04 oktober 2008, 17:03:21 »
Als je via een grafische schil, via de DSM cronjobs wilt bewerken, probeer dan dit eens:

1) Telnet verbinding maken en ingeven

mkdir /usr/syno/synoman/webman/3rdparty/cronjobs
2) maak de zojuist gemaakte dir het bestand application.cfg aan

vi /usr/syno/synoman/webman/3rdparty/cronjobs/application.cfg
3) en plaats in dit bestand de volgende regels
text = cronjobs
description = Bewerken cronjobs
type=embedded
path = /phpsrc/cronjobs/cronjobs.php

4) maak de dir aan waar het php bestand geplaatst kan worden
mkdir /usr/syno/synoman/phpsrc/cronjobs
5) maak het bestand cronjobs.php aan

vi /usr/syno/synoman/phpsrc/cronjobs/cronjobs.php
6) plaats daarin de volgende regels *** edit: beveiligd met code van Merty ***
<?php
putenv
('HTTP_COOKIE='&#46;$_SERVER['HTTP_COOKIE'&#93;);
putenv('REMOTE_ADDR='&#46;$_SERVER['REMOTE_ADDR'&#93;);
$user=exec('/usr/syno/synoman/webman/modules/authenticate&#46;cgi');
if(
$user != 'admin'){
   
header("HTTP/1&#46;0 403 Forbidden");
   exit;
}
if (
$_REQUEST['action'&#93; == 'reset')
 
{$fd=fopen('/var/log/cron&#46;log','w');fclose($fd);}
elseif (
$_REQUEST['action'&#93; == 'save') {
  
$out='';
  for(
$r=1;$r<=$_REQUEST['rows'&#93;;++$r) 
    
if ($_REQUEST['r'&#46;$r&#46;'c0'&#93;!='') for($c=0;$c<7;++$c) $out&#46;=$_REQUEST['r'&#46;$r&#46;'c'&#46;$c&#93;&#46;($c<6?chr(9):chr(10));
  
file_put_contents('/etc/crontab'stripslashes($out));
  
exec('killall crond;crond -l 8 -L /var/log/cron&#46;log'); 
  }
$filearray=file('/etc/crontab');
$_REQUEST['action'&#93; == '';
$l=isset($_REQUEST['lines'&#93;)?$_REQUEST['lines'&#93;: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&#46;&#46;59: 8 1,3,5 2-5 * */2" name="r'&#46;$r&#46;'c0" type="text" size="8" '&#46;($r==1?'readonly':'')&#46;' value="'&#46;$f[0&#93;&#46;'"/>';
  
print '<input title="*|0&#46;&#46;23: 8 1,3,5 2-5 * */2" name="r'&#46;$r&#46;'c1" type="text" size="7" '&#46;($r==1?'readonly':'')&#46;' value="'&#46;$f[1&#93;&#46;'"/>';
  
print '<input title="*|1&#46;&#46;31: 8 1,3,5 2-5 * */2" name="r'&#46;$r&#46;'c2" type="text" size="7" '&#46;($r==1?'readonly':'')&#46;' value="'&#46;$f[2&#93;&#46;'"/>';
  
print '<input title="*|1&#46;&#46;12: 8 1,3,5 2-5 * */2" name="r'&#46;$r&#46;'c3" type="text" size="7" '&#46;($r==1?'readonly':'')&#46;' value="'&#46;$f[3&#93;&#46;'"/>';
  
print '<input title="*|0&#46;&#46;7: so=0/7 sa=6" name="r'&#46;$r&#46;'c4" type="text" size="7" '&#46;($r==1?'readonly':'')&#46;' value="'&#46;$f[4&#93;&#46;'"/>';
  
print '<input name="r'&#46;$r&#46;'c5" type="text" size="7" '&#46;($r==1?'readonly':'')&#46;' value="'&#46;$f[5&#93;&#46;'"/>';
  
print '<input name="r'&#46;$r&#46;'c6" type="text" size="40" '&#46;($r==1?'readonly':'')&#46;' value="'&#46;$f[6&#93;&#46;'"/>';
  
if ($r>1) {
    print 
'<script>mark("r'&#46;$r&#46;'")</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&#46;&#46;59: 8 1,3,5 2-5 * */2" name="r'&#46;$r&#46;'c0" type="text" size="8" value=""/>';
  
print '<input title="*|0&#46;&#46;23: 8 1,3,5 2-5 * */2" name="r'&#46;$r&#46;'c1" type="text" size="7" value=""/>';
  
print '<input title="*|1&#46;&#46;31: 8 1,3,5 2-5 * */2" name="r'&#46;$r&#46;'c2" type="text" size="7" value=""/>';
  
print '<input title="*|1&#46;&#46;12: 8 1,3,5 2-5 * */2" name="r'&#46;$r&#46;'c3" type="text" size="7" value=""/>';
  
print '<input title="*|0&#46;&#46;7: so=0/7 sa=6" name="r'&#46;$r&#46;'c4" type="text" size="7" value=""/>';
  
print '<input name="r'&#46;$r&#46;'c5" type="text" size="7" value=""/>';
  
print '<input name="r'&#46;$r&#46;'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"/>
<input type="button" value="reset /var/log/cron.log" style="margin-top:6px"
onclick="document.getElementById('action').value='reset';submit()"/><br/>
</form><pre>
<?php
system
('tail -'&#46;$l&#46;' /var/log/cron&#46;log');
?>

</pre></body></html>

En probeer maar. Als het goed is krijg je het volgende, met een print van de cronlog en een resetmogelijkheid van de cronlog:



En voor het geval je denkt cronlog :shock:

Zo zet je de cronlog aan:

vi /usr/syno/ect/rc.d/S04crond.sh
en verander de regel
CROND=/usr/sbin/crondin
CROND=/usr/sbin/crond -l 8 -L /var/log/cron.log
Succes!

Wizjos
Wizjos.


DS409+    4 x WD10EADS DSM 4.2-3243       [TEST]
DS214play 1 x WD20EARX DSM 6.1.4-15217-3  [PROD]
DS1513+   5 x WD80EFZX DSM 6.1.4-15217-5  [PROD]
RT1900ac               SRM 1.1.6-6931-1   [PROD]


Is RAID hetzelfde als een backup?
Goeie schijven voor je NAS? Neem Western Digital!

Offline wizjos

  • Administrator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 121
  • -Ontvangen: 179
  • Berichten: 1.984
Nieuwe versie Cronjobs via DSM
« Reactie #1 Gepost op: 23 oktober 2008, 13:11:16 »
Naar aanleiding van een publicatie op het duitse forum van een vernieuwde versie van deze 3rd party oplossing ben ik zelf ook nog eens aan 't knutselen geslagen :mrgreen:

Zo ziet het er nu uit:

Wat is er nieuw, behalve de aanblik?

Er zijn (door mij) beveiligingen ingebouwd: als je op Delete klikt wordt je gevraagd of je inderdaad wilt verwijderen; als je niets selecteert krijg je een melding en net zo als je te veel selecteert...
Er zijn schermen om een job te bewerken en toe te voegen, waarbij de selectie van gebruiker, tijd enz. iets simpeler is gemaakt
In de huidige duitse versie is het niet mogelijk om een job aan te maken die een reeks met een '-' kan aangeven (als je bijvoorbeeld een job van 7 tot 11 's-avonds wilt laten lopen krijg je in de duitse versie: 7,8,9,10,11....,23; dat wordt nu dus 7-23)
Het script is beveiligd via de oplossing Beveiligen van php/html 3rd party code middels authorisatie. Zie daar ook voor details ten aanzien van het benodigde cgi script!

de bestanden (4 stuks) kun je plaatsen in dezelfde dir als de eerdere post (/usr/syno/synoman/webman/3rdparty/cronjobs) en zien er als volgt uit:

cronjob.php de hoofdpagina LET OP! Code van Merty voor beveiliging toegepast (regels 56 t/m 63).
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Cronjobs</title>
<style>body,input,select,option,td{font:11px Arial}body{background-color:#EEEEEE}legend{font-weight:bold;color:#15428b}fieldset{border:1px solid #bbb; padding:5px}a:hover,a:link,a:visited{color: #000;text-decoration:none}</style>

<script type="text/javascript" language="JavaScript">

function markCheckbox(state){
var checkboxes=document.getElementsByName('choicecron[]');
for(var n=0;n<checkboxes.length;n++){
checkboxes[n].checked=state;
}
}
function disp_confirm(){
var r=confirm("Are you sure you want to delete the selected job(s)?");
if (r==true){
document.cronindex.submit();
} else {
alert("Deletion aborted...");
}
}
function emptytest() {
message = 0;
nmbr = 0;
var checkboxes=document.getElementsByName('choicecron[]');
for(var n=0;n<checkboxes.length;n++){
if (checkboxes[n].checked == 1){
message=1;
nmbr++;
}
}
if (message == 0) {
switch(document.getElementById('action').value)
{
case 'delete':
alert("Please choose one or more jobs you want to delete");
break;
case 'enabledisable':
alert("Please choose one or more jobs you want to enable/disable");
break;
case 'changejob':
alert("Please choose a job you want to change");
break;
}
} else {
if (document.getElementById('action').value == 'delete') {
disp_confirm();
} else if (document.getElementById('action').value == 'changejob' && nmbr > 1) {
alert("You can change only one job at a time!");
} else {
document.cronindex.submit();
}
}
}
</script></head>

<?php
putenv('HTTP_COOKIE=' &#46;$_SERVER['HTTP_COOKIE'&#93;);
putenv('REMOTE_ADDR=' &#46;$_SERVER['REMOTE_ADDR'&#93;);
$user=exec('/usr/syno/synoman/webman/modules/authenticate&#46;cgi');
if ($user!="admin") {
    
    header("HTTP/1&#46;0 403 Forbidden");
    exit;
}
$lines=10;
if ($_REQUEST['action2'&#93; == 'deletelog')
file_put_contents('/var/log/cron&#46;log''');
if ($_REQUEST['action2'&#93; == 'refreshlog')
$lines=$_REQUEST['customlines'&#93;;
$crontabfile=file('/etc/crontab');
$t=count($crontabfile);
echo '<form name="cronindex" action="editcron&#46;php" method="post">';
echo '<input type="hidden" id="action" name="action" value="">';

echo '<fieldset><legend>etc/crontab</legend>
<table width=100%" cellspacing=1" cellpadding="2" bgcolor="#eeeeee"><tr bgcolor="#cdcdcd">
<td width="30px" align="center"><input type="checkbox" title="Select/Deselect all" name="checkall" value="" onclick="markCheckbox(this&#46;checked)" /></td><td width="60px"><b>Status</b></td><td><b>Who</b></td><td><b>Command</b></td><td><b>Description</b></td></tr>'
;
$z=0;
while ($z $t){
foreach($crontabfile as $last) {
$command=explode(chr(9),$last);
$delete_change=implode(chr(9),$command);
if ($command[0&#93;{0}=='#'){
$active='Stopped'$cellcol="CC0000";}
else{$active='Running'$cellcol="#006600";}
echo '<tr bgcolor="#e1e1e1">';
if ($command[0&#93;=='#minute'){
echo '<td align="center" height=22">&#46;&#46;&#46;</td><td>&#46;&#46;&#46;</td><td>&#46;&#46;&#46;</td><td>#minute hour mday month wday who command</td><td>Default header</td></tr>';
}
else{
$description substr_replace($command[7&#93;, '', 0, 1);
echo '<td align="center" ><input type="checkbox" name="choicecron[&#93;" value="'&#46;$delete_change&#46;'"></td><td><font color='&#46;$cellcol&#46;'>'&#46;$active&#46;'</font></td><td title="'&#46;$delete_change&#46;'">'&#46;$command[5&#93;&#46;'</td><td title="'&#46;$delete_change&#46;'">'&#46;$command[6&#93;&#46;'</td><td>'&#46;$description&#46;'</td></tr>';
}
$z++;
}
}
echo 
'</table></fieldset>';
//echo '<fieldset><legend>Actions</legend>';
echo '<input type="button" title="Delete selected job(s) and restart crond" value=" Delete job & Restart " onclick="document&#46;getElementById('action')&#46;value='delete';emptytest()"/>';
echo 
'<input type="button" title="Enable or Disable selected job(s) and restart crond" value=" Enable/Disable & Restart " style="margin-left:3px" onclick="document&#46;getElementById('action')&#46;value='enabledisable';emptytest()"/>';
echo 
'<input type="button" title="Edit selected job" value=" Edit selected job " style="margin-left:3px" onclick="document&#46;getElementById('action')&#46;value='changejob';emptytest()"/>';
echo 
'<input type="button" title="Create a new cronjob" value=" Set new job " style="margin-left:3px" onclick="window&#46;location='newcron&#46;php'">';
echo '</fieldset></form>';

echo 
'<fieldset><legend>/var/log/cron&#46;log</legend>';

$logread=exec('tail -'&#46;$lines&#46;' /var/log/cron&#46;log', $cronlog);
$cl=count($cronlog);

echo 
'<table width=100%" cellspacing=0" cellpadding="1" bgcolor="#e1e1e1">';
for (
$i=0;$i<$cl;$i++){
echo '<tr><td>'&#46;$cronlog[$i&#93;&#46;'</td></tr><tr>';
}
echo 
'</tr></table></fieldset>';

echo 
'<form name="cronlog" action="cronjob&#46;php" method="post">';
echo 
'<input type="hidden" id="log" name="action2" value="">';
echo 
'<fieldset><legend>Actions</legend>';
echo 
'<input type="button" title="Delete cron&#46;log file" value=" Delete Log " onclick="document&#46;getElementById('log')&#46;value='deletelog';submit()"/>';
echo 
'<input type="button" title="Refresh cron&#46;log" value=" Refresh Log " style="margin-left:3px" onclick="document&#46;getElementById('log')&#46;value='refreshlog';submit()"/>';
echo 
'<input type="text" name="customlines" size="1" value="'&#46;$lines&#46;'" style="margin-left:5px"> Lines</input>';
echo '</input>';
echo 
'</fieldset></form>';

if (
$empty==1){
echo '<font color="#ff0000"><b> Please select a job to edit (Multiple choice is impossible)&#46;</b></font>';
}
?>

editcron.php de pagina waarmee je een job bewerkt
<?php

$deletechange 
$_POST['choicecron'&#93;;
$button $_POST['action'&#93;;

$crontabfile=file('/etc/crontab'); //gewijzigd
$x=count($crontabfile);
$c=count($deletechange);

If (
$button == 'enabledisable'){
for ($i=0$i<$c$i++){
$search=$deletechange[$i&#93;;
for ($y=0;$y<$x;$y++){
if(array_key_exists($y,$crontabfile)){
if(substr_count($crontabfile[$y&#93;, $search) > 0){
if ($crontabfile[$y&#93;{0}=='#'){
$crontabfile[$y&#93;{0}='';
$crontabfile_mod $crontabfile[$y&#93;;
$crontabfile[$y&#93; = ltrim($crontabfile_mod);
}
else{
$crontabfile_mod $crontabfile[$y&#93;;
$crontabfile[$y&#93; = '#'&#46;$crontabfile_mod;
}
}
}
}
}
file_put_contents('/etc/crontab'$crontabfile);
exec('killall crond;crond -l 8 -L /var/log/cron&#46;log');
header("Location: cronjob&#46;php");
exit();
}

If (
$button == 'delete'){
for ($i=0$i<$c$i++){
$search=$deletechange[$i&#93;;
for ($y=0;$y<$x;$y++){
if(array_key_exists($y,$crontabfile)){
if(substr_count($crontabfile[$y&#93;, $search) > 0)
unset($crontabfile[$y&#93;);
}
}
}
file_put_contents('/etc/crontab'$crontabfile);
exec('killall crond;crond -l 8 -L /var/log/cron&#46;log');
header("Location: cronjob&#46;php");
exit();
}

If (
$button == 'changejob'){
if ($deletechange =='' or $c 1){
header("Location: cronjob&#46;php?empty=1");
exit();
}
?>


<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Cronjobs</title>
<style>body,input,select,option,td{font:11px Arial}body{background-color:#EEEEEE}legend{font-weight:bold;color:#15428b}fieldset{border:1px solid #bbb; padding:5px}a:hover,a:link,a:visited{color: #000;text-decoration:none}</style>

<script language="JavaScript" type="text/javascript">

function makeminDisable()
{
for( var i=1; i<6; i++ ){
document.getElementById('min' +i).disabled=true;
}
}
function makeminEnable()
{
for( var i=1; i<6; i++ ){
document.getElementById('min' +i).disabled=false;
}
}
function makestdDisable()
{
for( var i=1; i<3; i++ ){
document.getElementById('std' +i).disabled=true;
}
}
function makestdEnable()
{
for( var i=1; i<3; i++ ){
document.getElementById('std' +i).disabled=false;
}
}
function maketagDisable()
{
for( var i=1; i<4; i++ ){
document.getElementById('tag' +i).disabled=true;
}
}
function maketagEnable()
{
for( var i=1; i<4; i++ ){
document.getElementById('tag' +i).disabled=false;
}
}
function makemonDisable()
{
document.getElementById('mon').disabled=true;
}
function makemonEnable()
{
document.getElementById('mon').disabled=false;
}
function makewochtagDisable()
{
document.getElementById('wday').disabled=true;
}
function makewochtagEnable()
{
document.getElementById('wday').disabled=false;
}
function pushUser()
{
document.cron.user.value=document.cron.user_select.value;
}
</script></head>

<?php
function decrypt($decrypt){
//Expand '-' &#46;&#46;&#46;&#46;
$text explode(",",$decrypt);
foreach ($text as $value) {
$count++;
$begin "";
$end "";
$temp "";
if (strpos($value,"-") > 0) {
$begin substr($value,0,strpos($value,"-"));
$end substr($value,strpos($value,"-")+1);
for ($begin$begin<=$end$begin++) {
$temp $temp&#46;","&#46;$begin;
}
$text[$count-1&#93; = $temp;
}
}
$decrypt implode(",",$text);
if ($decrypt{0}!='*'){
$decrypt ','&#46;$decrypt&#46;',';
}

/*$position = strpos($decrypt, "-");
$pre = substr($decrypt,0,$position-2);
if (substr($pre,strlen($pre)-1,1) != ",") {$pre=$pre&#46;",";}
while (strpos($decrypt, "-") > 0){
$position = strpos($decrypt, "-");
$begin = substr($decrypt,$position-2,2);
$begin = str_replace(",","",$begin);
$end = substr($decrypt,$position+1,2);
$remain = substr($decrypt,$position+3);
if (substr($remain,0,1) != ",") {$remain = ","&#46;$remain;}
for ($i=$begin; $i<$end+1; $i++){$pre = $pre&#46;$i&#46;",";}
$decrypt = $pre&#46;substr($decrypt,$position+3);
}
//cleanup last ','
$decrypt = str_ireplace(",,",",",$decrypt);
echo $decrypt;
*/
return $decrypt;
}
$error $_POST['empty'&#93;;

$search=$deletechange[0&#93;;
$change=$deletechange[0&#93;;
for($y=0;$y<$x;$y++){
if(array_key_exists($y,$crontabfile)){
if(substr_count($crontabfile[$y&#93;, $search) > 0){
$result_edit $crontabfile[$y&#93;;
}
}
}
$edit_cron=explode(chr(9),$result_edit);

$user $edit_cron[5&#93;;
$command $edit_cron[6&#93;;
$description substr_replace($edit_cron[7&#93;, '', 0, 1);

if ($edit_cron[0&#93;{0}=='#'){
$active_no='checked="true"';
$active_yes='';
}
else{
$active_yes='checked="true"';
$active_no='';
}
if (
$edit_cron[0&#93;{0}=='*' or $edit_cron[0&#93;{1}=='*'){
$minno='checked="true"';
$minyes='';
$showmin='disabled="true"';
}
else{
$minyes='checked="true"';
$minno='';
$showmin='';
}
if (
$edit_cron[1&#93;{0}=='*'){
$stdno='checked="true"';
$stdyes='';
$showstd='disabled="true"';
}
else{
$stdyes='checked="true"';
$stdno='';
$showstd='';
}
if (
$edit_cron[2&#93;{0}=='*'){
$tagno='checked="true"';
$tagyes='';
$showtag='disabled="true"';
}
else{
$tagyes='checked="true"';
$tagno='';
$showtag='';
}
if (
$edit_cron[3&#93;{0}=='*'){
$monno='checked="true"';
$monyes='';
$showmon='disabled="true"';
}
else{
$monyes='checked="true"';
$monno='';
$showmon='';
}
if (
$edit_cron[4&#93;{0}=='*'){
$wdayno='checked="true"';
$wdayyes='';
$showwday='disabled="true"';
}
else{
$wdayyes='checked="true"';
$wdayno='';
$showwday='';
}
if (
$edit_cron[0&#93;{0}=='#'){
$edit_cron[0&#93; = substr_replace($edit_cron[0&#93;, '', 0, 1);
}
$edit_cron[0&#93; = decrypt($edit_cron[0&#93;);
$edit_cron[1&#93; = decrypt($edit_cron[1&#93;);
$edit_cron[2&#93; = decrypt($edit_cron[2&#93;);
$edit_cron[3&#93; = decrypt($edit_cron[3&#93;);
$edit_cron[4&#93; = decrypt($edit_cron[4&#93;);

echo '<fieldset><legend>Details</legend><form name="cron" action="setcron&#46;php" method="post">';
echo 
'<input type="hidden" id="action" name="action" value="">';
echo 
'<input type="hidden" id="tochange" name="tochange" value="'&#46;$change&#46;'">';
echo '<table><tr height="25">';
echo 
'<td width="150"><b>User</b></td><td><input title="Enter user for running this cronjob" type=text id="user" name="user" value="'&#46;$user&#46;'" size="12"</input>';
echo '<select name="user_select" size="1" style="margin-left:10px" value="" selected onChange="javascript&#058;pushUser();">';
echo 
'echo <option value="">Choose user</option>';
$user_shadow=file('/etc/shadow');
foreach(
$user_shadow as $each_user) {
$count_string=strlen($each_user);
$pos strpos($each_user":");
$select_user=substr_replace($each_user''$pos, -1);
echo '<option value="'&#46;$select_user&#46;'">'&#46;$select_user&#46;'</option>';
}
echo 
'</select></td>';
echo 
'<tr height="25"><td><b>Active</b></td><td><input type="radio" name="active" value="" '&#46;$active_yes&#46;'> Yes</input><input type="radio" name="active" value="#" '&#46;$active_no&#46;'> No</input></td>';
echo '<tr height="25"><td><b>Command</b></td><td><input title="Enter cron command here" type=text name="command" value="'&#46;$command&#46;'" size="50"</input></td>';
echo '<tr height="25"><td><b>Description</b></td><td><input title="Enter jobdescription here" type=text name="description" value="'&#46;$description&#46;'"size="50"</input></td>';
echo '</tr></table></fieldset>';
echo 
'<table cellspacing="0"><tr>';
echo 
'<td valign="top"><fieldset style="height:240px;"><legend>Minute</legend>
<input name="radiomin" type="radio" value="minall" onClick="makeminDisable();" '
&#46;$minno&#46;'> All</input><br />
<input name="radiomin" type="radio" value="minchoice" onClick="makeminEnable(this);" '&#46;$minyes&#46;'Selection</input><br /><br />

<
select name="min1[&#93;" id="min1" size="12" multiple="true" '&#46;$showmin&#46;'>';
$x=0; $y=12;
while ($x<$y){
$z=$x; settype($z, "string");
if (preg_match("/," &#46;$z&#46; ",/", $edit_cron[0&#93;)){
$selected = '
selected="selected"';
}
else{
$selected='';
}
echo '
<option value="'&#46;$x&#46;'" '&#46;$selected&#46;'>'&#46;$x&#46;'</option>';
$x++;
}
echo '
</select>';
echo '
<select name="min2[&#93;" id="min2" size="12" multiple="true" '&#46;$showmin&#46;' style="margin-left:5px">';
$x=12; $y=24;
while ($x<$y){
$z=$x; settype($z, "string");
if (preg_match("/," &#46;$z&#46; ",/", $edit_cron[0&#93;)){
$selected = '
selected="selected"';
}
else{
$selected='';
}
echo '
<option value="'&#46;$x&#46;'" '&#46;$selected&#46;'>'&#46;$x&#46;'</option>';
$x++;
}
echo '
</select>';
echo '
<select name="min3[&#93;"  id="min3" size="12" multiple="true" '&#46;$showmin&#46;' style="margin-left:5px">';
$x=24; $y=36;
while ($x<$y){
$z=$x; settype($z, "string");
if (preg_match("/," &#46;$z&#46; ",/", $edit_cron[0&#93;)){
$selected = '
selected="selected"';
}
else{
$selected='';
}
echo '
<option value="'&#46;$x&#46;'" '&#46;$selected&#46;'>'&#46;$x&#46;'</option>';
$x++;
}
echo '
</select>';
echo '
<select name="min4[&#93;"  id="min4" size="12" multiple="true" '&#46;$showmin&#46;' style="margin-left:5px">';
$x=36; $y=48;
while ($x<$y){
$z=$x; settype($z, "string");
if (preg_match("/," &#46;$z&#46; ",/", $edit_cron[0&#93;)){
$selected = '
selected="selected"';
}
else{
$selected='';
}
echo '
<option value="'&#46;$x&#46;'" '&#46;$selected&#46;'>'&#46;$x&#46;'</option>';
$x++;
}
echo '
</select>';
echo '
<select name="min5[&#93;"  id="min5" size="12" multiple="true" '&#46;$showmin&#46;' style="margin-left:5px">';
$x=48; $y=60;
while ($x<$y){
$z=$x; settype($z, "string");
if (preg_match("/," &#46;$z&#46; ",/", $edit_cron[0&#93;)){
$selected = '
selected="selected"';
}
else{
$selected='';
}
echo '
<option value="'&#46;$x&#46;'" '&#46;$selected&#46;'>'&#46;$x&#46;'</option>';
$x++;
}
echo '
</select></fieldset></td>';

echo '
<td valign="top"><fieldset style="height:240px;"><legend>Hour</legend>
<
input name="radiostd" type="radio" value="stdall" onClick="makestdDisable(this)" '&#46;$stdno&#46;'All</input><br />
<
input name="radiostd" type="radio" value="stdchoice" onClick="makestdEnable(this)" '&#46;$stdyes&#46;'Selection</input><br /><br />

<
select name="std1[&#93;" id="std1" size="12" multiple="true" '&#46;$showstd&#46;'>';
$x=0; $y=12;
while ($x<$y){
$z=$x; settype($z, "string");
if (preg_match("/," &#46;$z&#46; ",/", $edit_cron[1&#93;)){
$selected = '
selected="selected"';
}
else{
$selected='';
}
echo '
<option value="'&#46;$x&#46;'" '&#46;$selected&#46;'>'&#46;$x&#46;'</option>';
$x++;
}
echo '
</select>';
echo '
<select name="std2[&#93;" id="std2" size="12" multiple="true" '&#46;$showstd&#46;' style="margin-left:5px">';
$x=12; $y=24;
while ($x<$y){
$z=$x; settype($z, "string");
if (preg_match("/," &#46;$z&#46; ",/", $edit_cron[1&#93;)){
$selected = '
selected="selected"';
}
else{
$selected='';
}
echo '
<option value="'&#46;$x&#46;'" '&#46;$selected&#46;'>'&#46;$x&#46;'</option>';
$x++;
}
echo '
</select></fieldset></td>';

echo '
<td valign="top"><fieldset style="height:240px;"><legend>Day</legend>
<
input name="radiotag" type="radio" value="tagall" onClick="maketagDisable(this)" '&#46;$tagno&#46;'All</input><br />
<
input name="radiotag" type="radio" value="tagchoice" onClick="maketagEnable(this)" '&#46;$tagyes&#46;'Selection</input><br /><br />

<
select name="tag1[&#93;" id="tag1" size="12" multiple="true" '&#46;$showtag&#46;'>';
$x=1; $y=13;
while ($x<$y){
$z=$x; settype($z, "string");
if (preg_match("/," &#46;$z&#46; ",/", $edit_cron[2&#93;)){
$selected = '
selected="selected"';
}
else{
$selected='';
}
echo '
<option value="'&#46;$x&#46;'" '&#46;$selected&#46;'>'&#46;$x&#46;'</option>';
$x++;
}
echo '
</select>';
echo '
<select name="tag2[&#93;" id="tag2" size="12" multiple="true" '&#46;$showtag&#46;' style="margin-left:5px">';
$x=13; $y=25;
while ($x<$y){
$z=$x; settype($z, "string");
if (preg_match("/," &#46;$z&#46; ",/", $edit_cron[2&#93;)){
$selected = '
selected="selected"';
}
else{
$selected='';
}
echo '
<option value="'&#46;$x&#46;'" '&#46;$selected&#46;'>'&#46;$x&#46;'</option>';
$x++;
}
echo '
</select>';
echo '
<select name="tag3[&#93;" id="tag3" size="12" multiple="true" '&#46;$showtag&#46;' style="margin-left:5px">';
$x=25; $y=32;
while ($x<$y){
$z=$x; settype($z, "string");
if (preg_match("/," &#46;$z&#46; ",/", $edit_cron[2&#93;)){
$selected = '
selected="selected"';
}
else{
$selected='';
}
echo '
<option value="'&#46;$x&#46;'" '&#46;$selected&#46;'>'&#46;$x&#46;'</option>';
$x++;
}
echo '
</select></fieldset></td>';

echo '
<td valign="top"><fieldset style="height:240px;"><legend>Month</legend>
<
input name="radiomon" type="radio" value="monall" onClick="makemonDisable(this)" '&#46;$monno&#46;'All</input><br />
<
input name="radiomon" type="radio" value="monchoice" onClick="makemonEnable(this)" '&#46;$monyes&#46;'Selection</input><br /><br />

<
select name="mon[&#93;" id="mon" size="12" multiple="true" '&#46;$showmon&#46;'>';
$x=1; $y=13;
while ($x<$y){
$z=$x; settype($z, "string");
if (preg_match("/," &#46;$z&#46; ",/", $edit_cron[3&#93;)){
$selected = '
selected="selected"';
}
else{
$selected='';
}
echo '
<option value="'&#46;$x&#46;'" '&#46;$selected&#46;'>'&#46;$x&#46;'</option>';
$x++;
}
echo '
</select></fieldset></td>';

echo '
<td valign="top"><fieldset style="height:240px;"><legend>Weekday</legend>
<
input name="radiowochtag" type="radio" value="wochtagall" onClick="makewochtagDisable(this)" '&#46;$wdayno&#46;'All</input><br />
<
input name="radiowochtag" type="radio" value="wochtagchoice" onClick="makewochtagEnable(this)" '&#46;$wdayyes&#46;'Selection</input><br /><br />

<
select name="wochtag[&#93;" id="wday" size="12" multiple="true" '&#46;$showwday&#46;'>';
$wday=array("Monday", "Thuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday");
$x=1; $y=8; $z=0; $w=0;
while ($x<$y){
$z=$x; settype($z, "string");
if (preg_match("/," &#46;$z&#46; ",/", $edit_cron[4&#93;)){
$selected = '
selected="selected"';
}
else{
$selected='';
}
echo '
<option value="'&#46;$x&#46;'" '&#46;$selected&#46;'>'&#46;$wday[$w&#93;&#46;'</option>';
$x++; $z++; $w++;
}
echo '
</select></fieldset></td>';

echo '
</tr></table>';
echo '
<fieldset><legend>Actions</legend>';
echo '
<input type="button" title="Abort and go back to cron index" value=" Cancel " onclick="window&#46;location='cronjob&#46;php'">';
echo '
<input type="button" title="Save job and restart crond" value="Save cronjob and restart crond" style="margin-left:3px" onclick="document&#46;getElementById('action')&#46;value='editcron';submit()">';
echo '
</fieldset></fieldset></form>';
echo '
<br />* Hold "CTRL" for multiple selection and deselection';
if ($empty==1){
echo '
<br /><br /><font color="#ff0000"><b>Value for User and Command is required!</b></font>';
}
}
?>

newcron.php hiermee maak je een nieuwe job aan
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Cronjobs</title>
<style>body,input,select,option,td{font:11px Arial}body{background-color:#EEEEEE}legend{font-weight:bold;color:#15428b}fieldset{border:1px solid #bbb; padding:5px}a:hover,a:link,a:visited{color: #000;text-decoration:none}</style>

<script language="JavaScript" type="text/javascript">

function makeminDisable()
{
for( var i=1; i<6; i++ ){
document.getElementById('min' +i).disabled=true;
}
}
function makeminEnable()
{
for( var i=1; i<6; i++ ){
document.getElementById('min' +i).disabled=false;
}
}
function makestdDisable()
{
for( var i=1; i<3; i++ ){
document.getElementById('std' +i).disabled=true;
}
}
function makestdEnable()
{
for( var i=1; i<3; i++ ){
document.getElementById('std' +i).disabled=false;
}
}
function maketagDisable()
{
for( var i=1; i<4; i++ ){
document.getElementById('tag' +i).disabled=true;
}
}
function maketagEnable()
{
for( var i=1; i<4; i++ ){
document.getElementById('tag' +i).disabled=false;
}
}
function makemonDisable()
{
document.getElementById('mon').disabled=true;
}
function makemonEnable()
{
document.getElementById('mon').disabled=false;
}
function makewochtagDisable()
{
document.getElementById('wday').disabled=true;
}
function makewochtagEnable()
{
document.getElementById('wday').disabled=false;
}
function pushUser()
{
document.cron.user.value=document.cron.user_select.value;
}
</script></head>

<?php

$error $_POST['empty'&#93;;
echo '<fieldset><legend>Details</legend><form name="cron" action="setcron&#46;php" method="post">';
echo '<table><tr height="25">';
echo '<td width="150"><b>User</b></td><td><input title="Enter user for running this cronjob" type=text id="user" name="user" size="12"</input>';
echo '<select name="user_select" size="1" style="margin-left:10px" value="" selected onChange="javascript&#058;pushUser();">';
echo 'echo <option value="">Choose user</option>';
$user_shadow=file('/etc/shadow');
foreach($user_shadow as $each_user) {
$count_string=strlen($each_user);
$pos strpos($each_user":");
$select_user=substr_replace($each_user''$pos, -1);
echo '<option value="'&#46;$select_user&#46;'">'&#46;$select_user&#46;'</option>';
}
echo '</select></td>';
echo '<tr height="25"><td><b>Active</b></td><td><input type="radio" name="active" value="" checked="checked"> Yes</input><input type="radio" name="active" value="#"> No</input></td>';
echo '<tr height="25"><td><b>Command</b></td><td><input title="Enter cron command here" type=text name="command" size="50"</input></td>';
echo '<tr height="25"><td><b>Description</b></td><td><input title="Enter jobdescription here" type=text name="description" size="50"</input></td>';
echo '</tr></table></fieldset>';
echo '<table cellspacing="0"><tr>';
echo '<td valign="top"><fieldset style="height:240px;"><legend>Minute</legend>
<input name="radiomin" type="radio" value="minall" onClick="makeminDisable();" checked="true"> All</input><br />
<input name="radiomin" type="radio" value="minchoice" onClick="makeminEnable(this);" > Selection</input><br /><br />

<select name="min1[&#93;" id="min1" size="12" multiple="true" disabled="true">'
;
$x=0$y=12;
while ($x<$y){
echo '<option value="'&#46;$x&#46;'">'&#46;$x&#46;'</option>';
$x++;
}
echo '</select>';
echo '<select name="min2[&#93;" id="min2" size="12" multiple="true" disabled="true" style="margin-left:5px">';
$x=12$y=24;
while ($x<$y){
echo '<option value="'&#46;$x&#46;'">'&#46;$x&#46;'</option>';
$x++;
}
echo '</select>';
echo '<select name="min3[&#93;"  id="min3" size="12" multiple="true" disabled="true" style="margin-left:5px">';
$x=24$y=36;
while ($x<$y){
echo '<option value="'&#46;$x&#46;'">'&#46;$x&#46;'</option>';
$x++;
}
echo '</select>';
echo '<select name="min4[&#93;"  id="min4" size="12" multiple="true" disabled="true" style="margin-left:5px">';
$x=36$y=48;
while ($x<$y){
echo '<option value="'&#46;$x&#46;'">'&#46;$x&#46;'</option>';
$x++;
}
echo '</select>';
echo '<select name="min5[&#93;"  id="min5" size="12" multiple="true" disabled="true" style="margin-left:5px">';
$x=48$y=60;
while ($x<$y){
echo '<option value="'&#46;$x&#46;'">'&#46;$x&#46;'</option>';
$x++;
}
echo '</select></fieldset></td>';

echo '<td valign="top"><fieldset style="height:240px;"><legend>Hour</legend>
<input name="radiostd" type="radio" value="stdall" onClick="makestdDisable(this)" checked="checked"> All</input><br />
<input name="radiostd" type="radio" value="stdchoice" onClick="makestdEnable(this)"> Selection</input><br /><br />
<select name="std1[&#93;" id="std1" size="12" multiple="true" disabled="true">'
;
$x=0$y=12;
while ($x<$y){
echo '<option value="'&#46;$x&#46;'">'&#46;$x&#46;'</option>';
$x++;
}
echo '</select>';
echo '<select name="std2[&#93;" id="std2" size="12" multiple="true" disabled="true" style="margin-left:5px">';
$x=12$y=24;
while ($x<$y){
echo '<option value="'&#46;$x&#46;'">'&#46;$x&#46;'</option>';
$x++;
}
echo '</select></fieldset></td>';

echo '<td valign="top"><fieldset style="height:240px;"><legend>Day</legend>
<input name="radiotag" type="radio" value="tagall" onClick="maketagDisable(this)" checked="checked"> All</input><br />
<input name="radiotag" type="radio" value="tagchoice" onClick="maketagEnable(this)"> Selection</input><br /><br />
<select name="tag1[&#93;" id="tag1" size="12" multiple="true" disabled="true">'
;
$x=1$y=13;
while ($x<$y){
echo '<option value="'&#46;$x&#46;'">'&#46;$x&#46;'</option>';
$x++;
}
echo '</select>';
echo '<select name="tag2[&#93;" id="tag2" size="12" multiple="true" disabled="true" style="margin-left:5px">';
$x=13$y=25;
while ($x<$y){
echo '<option value="'&#46;$x&#46;'">'&#46;$x&#46;'</option>';
$x++;
}
echo '</select>';
echo '<select name="tag3[&#93;" id="tag3" size="12" multiple="true" disabled="true" style="margin-left:5px">';
$x=25$y=32;
while ($x<$y){
echo '<option value="'&#46;$x&#46;'">'&#46;$x&#46;'</option>';
$x++;
}
echo '</select></fieldset></td>';

echo '<td valign="top"><fieldset style="height:240px;"><legend>Month</legend>
<input name="radiomon" type="radio" value="monall" onClick="makemonDisable(this)" checked="checked"> All</input><br />
<input name="radiomon" type="radio" value="monchoice" onClick="makemonEnable(this)"> Selection</input><br /><br />
<select name="mon[&#93;" id="mon" size="12" multiple="true" disabled="true">'
;
$x=1$y=13;
while ($x<$y){
echo '<option value="'&#46;$x&#46;'">'&#46;$x&#46;'</option>';
$x++;
}
echo '</select></fieldset></td>';

echo '<td valign="top"><fieldset style="height:240px;"><legend>Weekday</legend>
<input name="radiowochtag" type="radio" value="wochtagall" onClick="makewochtagDisable(this)" checked="checked"> All</input><br />
<input name="radiowochtag" type="radio" value="wochtagchoice" onClick="makewochtagEnable(this)"> Selection</input><br /><br />
<select name="wochtag[&#93;" id="wday" size="12" multiple="true" disabled="true">'
;
$wday=array("Monday""Tuesday""Wednesday""Thursday""Friday""Saturday""Sunday");
$x=1$y=8; $z=0;
while ($x<$y){
echo '<option value="'&#46;$x&#46;'">'&#46;$wday[$z&#93;&#46;'</option>';
$x++; $z++;
}
echo '</select></fieldset></td>';

echo '</tr></table>';
echo '<fieldset><legend>Actions</legend>';
echo '<input type="button" title="Abort new job and go back to index" value=" Cancel " onclick="window&#46;location='cronjob&#46;php'">';
echo '<input type="submit" title="Save cronjob and restart crond" style="margin-left:3px" value=" Save job & Restart ">';
echo '</fieldset></form>';
echo '<br />* Hold "CTRL" for multiple selection and deselection';
if ($empty==1){
echo '<br /><br /><font color="#ff0000"><b>Value for User and Command is required!</b></font>';
}
?>

setcron.php verwerkt nieuwe en gewijzigde jobs en past /etc/crontab aan
<?php
Function MakeCompact($what) {
$cronarray explode(",",$what);
$dummyarray $cronarray;
$loop 0;
foreach ($cronarray as $value) {
if ($loop 0) {
if ($temp+== $value) {
$dummyarray[$loop&#93; = "-";
$temp $value;
} else {
$dummyarray[$loop-1&#93; = $cronarray[$loop-1&#93;;
$temp $value;
}
} else {
$temp $value;
}
$loop++;
}
$what implode(",",$dummyarray);
$what str_ireplace(",-","-",$what);
$what str_ireplace("-,","-",$what);
while (stripos($what,",-,") > 0) {
$what str_ireplace(",-,","",$what);
}
while (stripos($what,"--") > 0) {
$what str_ireplace("--","-",$what);
}
if (substr($what,strlen($what)-1,1) == ",") {$what substr($what,0,strlen($what)-1);}
unset($dummyarray);
unset($cronarray);
return $what;
}
$minall $_POST['radiomin'&#93;;
$minute1 $_POST['min1'&#93;;
$minute2 $_POST['min2'&#93;;
$minute3 $_POST['min3'&#93;;
$minute4 $_POST['min4'&#93;;
$minute5 $_POST['min5'&#93;;
$stdall $_POST['radiostd'&#93;;
$hour1 $_POST['std1'&#93;;
$hour2 $_POST['std2'&#93;;
$tagall $_POST['radiotag'&#93;;
$day1 $_POST['tag1'&#93;;
$day2 $_POST['tag2'&#93;;
$day3 $_POST['tag3'&#93;;
$monall $_POST['radiomon'&#93;;
$mon1 $_POST['mon'&#93;;
$wochtagall $_POST['radiowochtag'&#93;;
$wday1 $_POST['wochtag'&#93;;
$user1 $_POST['user'&#93;;
$active1 $_POST['active'&#93;;
$command1 $_POST['command'&#93;;
$description1 $_POST['description'&#93;;
$button $_POST['action'&#93;;
$deletechange $_POST['tochange'&#93;;
if ($user1=='' or $command1 ==''){
header("Location: newcron&#46;php?empty=1");
exit();
}
$crontabfile=file('/etc/crontab');
$x=count($crontabfile);
if (
$button == 'editcron'){
for ($y=0;$y<$x;$y++){
if(array_key_exists($y,$crontabfile)){
if(substr_count($crontabfile[$y&#93;,substr($deletechange,0,strlen($deletechange)-5)) > 0) {
$crontabfile[$y&#93;='edit';
$t=$y;
}
}
}
}
if (
$minall == 'minall'){
$cron_minute_write $active &#46; '*';
}
else{
if (isset($minute1)){
$cron_minute1 implode(","$minute1) &#46; ",";
}
if (isset($minute2)){
$cron_minute2 implode(","$minute2) &#46; ",";
}
if (isset($minute3)){
$cron_minute3 implode(","$minute3) &#46; ",";
}
if (isset($minute4)){
$cron_minute4 implode(","$minute4) &#46; ",";
}
if (isset($minute5)){
$cron_minute5 implode(","$minute5) &#46; ",";
}
if ($cron_minute1=='' and  $cron_minute2=='' and $cron_minute3=='' and $cron_minute4=='' and $cron_minute5=='') {
$cron_minute_write $active &#46; '*';
} else {
$cron_minute=$cron_minute1 &#46; $cron_minute2 &#46; $cron_minute3 &#46; $cron_minute4 &#46; $cron_minute5;
$cron_minute MakeCompact($cron_minute);
$cron_minute_write=$active &#46; $cron_minute;
}
}
if (
$stdall == 'stdall'){
$cron_std_write ='*';
}
else{
if (isset($hour1)){
$cron_std1 implode(","$hour1) &#46; ",";
}
if (isset($hour2)){
$cron_std2 implode(","$hour2) &#46; ",";
}
if ($cron_std1=='' and  $cron_std2=='') {
$cron_std_write '*';
} else {
$cron_std=$cron_std1 &#46; $cron_std2;
$cron_std_write=MakeCompact($cron_std);
}
}
if (
$tagall == 'tagall'){
$cron_day_write ='*';
}
else{
if (isset($day1)){
$cron_day1 implode(","$day1) &#46; ",";
}
if (isset($day2)){
$cron_day2 implode(","$day2) &#46; ",";
}
if (isset($day3)){
$cron_day3 implode(","$day3) &#46; ",";
}

if ($cron_day1=='' and  $cron_day2=='' and $cron_day3=='') {
$cron_day_write '*';
} else {
$cron_day=$cron_day1 &#46; $cron_day2 &#46; $cron_day3;
$cron_day_write MakeCompact($cron_day);
}
}
if (
$monall == 'monall'){
$cron_mon_write ='*';
}
else{
if (isset($mon1)){
$cron_mon implode(","$mon1) &#46; ",";
}

if ($cron_mon=='') {
$cron_mon_write '*';
} else {
$cron_mon_write MakeCompact($cron_mon);
}
}
if (
$wochtagall == 'wochtagall'){
$cron_wday_write ='*';
}
else{
if (isset($wday1)){
$cron_wday implode(","$wday1) &#46; ",";
}
if ($cron_wday=='') {
$cron_wday_write '*';
} else {
$cron_wday_write MakeCompact($cron_wday);
}
}
$tab=chr(9);
$newline=chr(10);
if (
$description1 ==''){
$seperator='';
}
else{
$seperator='#';
}
$cron_write $cron_minute_write&#46;$tab&#46;$cron_std_write&#46;$tab&#46;$cron_day_write&#46;$tab&#46;$cron_mon_write&#46;$tab&#46;$cron_wday_write&#46;$tab&#46;$user1&#46;$tab&#46;$command1&#46;$tab&#46;$seperator&#46;$description1&#46;$newline;
$crontabfile[$t&#93; = str_replace(chr(13),'',$cron_write);
//die($crontabfile[$t&#93;);
file_put_contents('/etc/crontab'$crontabfile);
exec('killall crond;crond -l 8 -L /var/log/cron&#46;log');
header("Location: cronjob&#46;php");
exit();
?>


Ter illustratie nog een afbeeldinkje van het edit-scherm:


Als je e.e.a. bijplaatst in de directory /usr/syno/synoman/webman/3rdparty/cronjobs, pas dan application.cfg aan zodat de nieuwe cronjob-pagina getoond wordt i.p.v. de oude:

application.cfg was:
text = cronjobs
description = cronjobs
type=embedded
path = /phpsrc/cronjobs/cronjobs.php

en wordt:
text = cronjobs
description = cronjobs
type=embedded
path = /phpsrc/cronjobs/cronjob.php

Dus één hele 's' minder :mrgreen:

Enne, vergeet de chmod 755 niet op de php bestanden!

Veel plezier er mee!

Wizjos
Wizjos.


DS409+    4 x WD10EADS DSM 4.2-3243       [TEST]
DS214play 1 x WD20EARX DSM 6.1.4-15217-3  [PROD]
DS1513+   5 x WD80EFZX DSM 6.1.4-15217-5  [PROD]
RT1900ac               SRM 1.1.6-6931-1   [PROD]


Is RAID hetzelfde als een backup?
Goeie schijven voor je NAS? Neem Western Digital!

Offline wizjos

  • Administrator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 121
  • -Ontvangen: 179
  • Berichten: 1.984
Re: Cronjobs via DSM
« Reactie #2 Gepost op: 24 oktober 2008, 12:46:23 »
Omdat je nooit te oud bent om te leren :mrgreen: heb ik de code van cronjob.php aangepast met de beveiliging die Merty heeft bedacht. Zie http://synology.nl/forum/viewtopic.php?f=83&t=2274.
De code in de eerdere post heb ik aangepast, zodat die weer helemaal up-to-date is :D

Als je de code al had overgenomen, pas deze dan zelf aan, of haal 'm even opnieuw uit de post (het gaat dus om cronjob.php)

Groet,

Wizjos
Wizjos.


DS409+    4 x WD10EADS DSM 4.2-3243       [TEST]
DS214play 1 x WD20EARX DSM 6.1.4-15217-3  [PROD]
DS1513+   5 x WD80EFZX DSM 6.1.4-15217-5  [PROD]
RT1900ac               SRM 1.1.6-6931-1   [PROD]


Is RAID hetzelfde als een backup?
Goeie schijven voor je NAS? Neem Western Digital!

Offline zdDog

  • Bedankjes
  • -Gegeven: 0
  • -Ontvangen: 0
  • Berichten: 37
Re: Cronjobs via DSM
« Reactie #3 Gepost op: 12 juni 2009, 07:15:12 »
zodra je tijd en zin hebt hoor  :wink:

ik moest dus weer even helemaal overnieuw beginnen, deze keer maar een stap-voor-stap log aangemaakt

vorige keer "deed alles" het maar had opeens geen toegang meer tot de :5000 interface

wat mij opvalt is dat het script netjes laadt zoals het moet, maar de velden niet worden gevuld / php geparsed

zie:
in mijn 409+ is er dus geen directe vulling van de /usr/syno/synoman/webman/ maar deze verwijst met een symlink naar /volume1/@appstore/CronJobs
zie:

edit: https://mijnip_over_dyndns:5001/phpsrc/ ... ronjob.php
geeft de volgende melding:
Citaat
Warning: Cannot modify header information - headers already sent by (output started at /usr/syno/synoman/phpsrc/cronjobs/cronjob.php:5) in /usr/syno/synoman/phpsrc/cronjobs/cronjob.php on line 67

en https://10.0.0.12:5001/phpsrc/cronjobs/cronjob.php
geeft


graag je advies EDIT: inmiddels opgelost; ik heb het nieuwe "newcron" gebruikt en dat lijkt te werken :mrgreen:

gr zdDog
3rdPartyMan Automate CurCon CFE Joomla Mailstation MC MediaTomb NewCron PhpMyAdmin PhpMyBackupPro PhpMyIPKG PhpSysinfo ServiceSwitch StringEditor Topjobs Unzip Webalizer WebEditor Zina

Offline zdDog

  • Bedankjes
  • -Gegeven: 0
  • -Ontvangen: 0
  • Berichten: 37
Re: Cronjobs via DSM
« Reactie #4 Gepost op: 12 juni 2009, 17:40:23 »
:lol:  top script! net als phpMyIPKG

thankz!
3rdPartyMan Automate CurCon CFE Joomla Mailstation MC MediaTomb NewCron PhpMyAdmin PhpMyBackupPro PhpMyIPKG PhpSysinfo ServiceSwitch StringEditor Topjobs Unzip Webalizer WebEditor Zina

Offline zdDog

  • Bedankjes
  • -Gegeven: 0
  • -Ontvangen: 0
  • Berichten: 37
Re: Cronjobs via DSM
« Reactie #5 Gepost op: 20 juni 2009, 10:44:17 »
Hi Wizjos

ik krijg telkens bij het aanmaken of editten v e job de volgende melding:
Citaat
Warning: Cannot modify header information - headers already sent by (output started at /usr/syno/synoman/phpsrc/newcron/editcron.php:1) in /usr/syno/synoman/phpsrc/newcron/editcron.php on line 37

heb 'm in een ver verleden wel eens gehad

Citaat
The "headers already sent" error is usually caused by having white space before or after the opening and closing PHP tags (<?php . . . ?>).

klopte idd, blijkbaar begon de code met een tab (editor pspad), en die weggehaald te hebben was het probleem opgelost
gr zdDog
3rdPartyMan Automate CurCon CFE Joomla Mailstation MC MediaTomb NewCron PhpMyAdmin PhpMyBackupPro PhpMyIPKG PhpSysinfo ServiceSwitch StringEditor Topjobs Unzip Webalizer WebEditor Zina

Offline Maradona10

  • Bedankjes
  • -Gegeven: 0
  • -Ontvangen: 0
  • Berichten: 15
Re: Cronjobs via DSM
« Reactie #6 Gepost op: 26 augustus 2009, 12:04:41 »
Ik heb het script geinstallleerd via je 3Party Apps Manager 3.1 maar als ik naar Cronjobs ga krijg ik deze error:

Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /usr/syno/synoman/phpsrc/cronjobs/cronjob.php on line 102

Moet ik eerst nog iets anders installeren of alleen jouw script?

Offline wizjos

  • Administrator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 121
  • -Ontvangen: 179
  • Berichten: 1.984
Re: Cronjobs via DSM
« Reactie #7 Gepost op: 26 augustus 2009, 12:30:00 »
Maradona,

Je zal de 3rd party apps handleiding moeten lezen en waar nodig je Syno aanpassen.

Succes!

Wizjos
Wizjos.


DS409+    4 x WD10EADS DSM 4.2-3243       [TEST]
DS214play 1 x WD20EARX DSM 6.1.4-15217-3  [PROD]
DS1513+   5 x WD80EFZX DSM 6.1.4-15217-5  [PROD]
RT1900ac               SRM 1.1.6-6931-1   [PROD]


Is RAID hetzelfde als een backup?
Goeie schijven voor je NAS? Neem Western Digital!

Offline Maradona10

  • Bedankjes
  • -Gegeven: 0
  • -Ontvangen: 0
  • Berichten: 15
Re: Cronjobs via DSM
« Reactie #8 Gepost op: 26 augustus 2009, 12:40:27 »
Dat heb ik gedaan. En heb al je andere script van je website ook zo geinstalleerd zonder problemen.

Offline Maradona10

  • Bedankjes
  • -Gegeven: 0
  • -Ontvangen: 0
  • Berichten: 15
Re: Cronjobs via DSM
« Reactie #9 Gepost op: 26 augustus 2009, 13:34:13 »
Ik heb nu ook deze http://www.synology-forum.nl/viewtopic.php?f=83&t=2788&p=11891&hilit=newcron#msg11891geprobeerd, maar die geeft bij exact hetzelfde de error.

Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /usr/syno/synoman/phpsrc/newcron/cronjob.php on line 97

En daar staat: echo '<input type="button" title="Delete selected job(s) and restart crond" value=" Delete job & Restart " onclick="document.getElementById('action').value='delete';emptytest()"/>';

Enig idee?

Offline wizjos

  • Administrator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 121
  • -Ontvangen: 179
  • Berichten: 1.984
Re: Cronjobs via DSM
« Reactie #10 Gepost op: 26 augustus 2009, 13:45:09 »
Hmmm,

Wellicht kun je 'm dan het beste van mijn site downloaden... Zie mijn onderschrift.

Succes,

Wizjos
Wizjos.


DS409+    4 x WD10EADS DSM 4.2-3243       [TEST]
DS214play 1 x WD20EARX DSM 6.1.4-15217-3  [PROD]
DS1513+   5 x WD80EFZX DSM 6.1.4-15217-5  [PROD]
RT1900ac               SRM 1.1.6-6931-1   [PROD]


Is RAID hetzelfde als een backup?
Goeie schijven voor je NAS? Neem Western Digital!

Offline Maradona10

  • Bedankjes
  • -Gegeven: 0
  • -Ontvangen: 0
  • Berichten: 15
Re: Cronjobs via DSM
« Reactie #11 Gepost op: 26 augustus 2009, 15:58:33 »
Citaat van: "wizjos"
Hmmm,

Wellicht kun je 'm dan het beste van mijn site downloaden... Zie mijn onderschrift.

Succes,

Wizjos

Dat had ik de 1e keer gedaan, 2e keer die van dit topic en als laatste die nieuwe. Lukt dus niet.

Offline wizjos

  • Administrator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 121
  • -Ontvangen: 179
  • Berichten: 1.984
Re: Cronjobs via DSM
« Reactie #12 Gepost op: 26 augustus 2009, 17:12:19 »
Maradona,

Dan heb ik werkelijk even geen idee... Zoals de regel daar staat lijkt 'ie goed te zijn: aantallen en plaatsen van de dubbele en enkele quotejes kloppen en het geheel wordt afgesloten door een puntkomma.

Zal vanavond nog eens kijken wat er bij mij precies in het werkende script staat, maar gezien dat meer mensen dit script al gebruiken vrees ik dat er bij jou toch iets fout zit. Ik weet alleen zo even niet precies wat.

Groet,

Wizjos
Wizjos.


DS409+    4 x WD10EADS DSM 4.2-3243       [TEST]
DS214play 1 x WD20EARX DSM 6.1.4-15217-3  [PROD]
DS1513+   5 x WD80EFZX DSM 6.1.4-15217-5  [PROD]
RT1900ac               SRM 1.1.6-6931-1   [PROD]


Is RAID hetzelfde als een backup?
Goeie schijven voor je NAS? Neem Western Digital!

Offline Maradona10

  • Bedankjes
  • -Gegeven: 0
  • -Ontvangen: 0
  • Berichten: 15
Re: Cronjobs via DSM
« Reactie #13 Gepost op: 27 augustus 2009, 09:58:00 »
En nog tijd gehad om te checken? Alvast bedankt.

Offline wizjos

  • Administrator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 121
  • -Ontvangen: 179
  • Berichten: 1.984
Re: Cronjobs via DSM
« Reactie #14 Gepost op: 28 augustus 2009, 10:38:16 »
Maradona,

Sorry dat 't even duurde... Druk,druk :(

Ik heb de bewuste regel uit het script (vanaf de plek waar het script wordt uitgevoerd, dus niet uit een archief of zo) letterlijk gekopieerd naar kladblok en die uit jouw post er onder gehangen... Wat denk je? 100% gelijk. Daar kan het dus echt niet aan liggen naar mijn bescheiden mening.
Wat dan wel? Wellicht dat je in een regel er onder of er boven een fout hebt staan. PM mij anders eens een volledige kopie van dit php bestand. Wil ik ook nog wel nakijken
Overigens valt mij nu pas op dat een eerder bericht rept over dezelfde error, maar dan op regel 102... Hoe kan het nu ineens regel 97 geworden zijn?

Groet,

Wizjos
Wizjos.


DS409+    4 x WD10EADS DSM 4.2-3243       [TEST]
DS214play 1 x WD20EARX DSM 6.1.4-15217-3  [PROD]
DS1513+   5 x WD80EFZX DSM 6.1.4-15217-5  [PROD]
RT1900ac               SRM 1.1.6-6931-1   [PROD]


Is RAID hetzelfde als een backup?
Goeie schijven voor je NAS? Neem Western Digital!


 

Tool om cronjobs uit te voeren?

Gestart door thecellBoard Algemeen

Reacties: 12
Gelezen: 8162
Laatste bericht 04 april 2012, 06:41:21
door Mickroz