Server Support Forum
Wo Cronjob reinschreiben?

Zurück   Server Support Forum > >


Antwort
 
Themen-Optionen Thema bewerten
  #16  
Alt 03.06.2017, 12:36
GwenDragon GwenDragon ist offline
Registered User
 
Registriert seit: 12.2008
Ort: Franken
Alter: 57
Beiträge: 2.970
Code:
if ($argv[1] = croncodezahl) {
Wie? Das prüft nicht ob argv[1] gleich croncodezahl ist.
Di weist der zweiten Arrayposition von argv den Wert von croncodezahl zu.

Operatoren bei PHP: http://php.net/manual/de/language.op...comparison.php

Und du solltes mal dein PHP-Programm in der Shell auf Fehler testen.
Hinweis: Schalter -f und -l
http://php.net/manual/en/features.co...ne.options.php
__________________
die Gwen, also die Drachin... nix anderscht!

Geändert von GwenDragon (03.06.2017 um 12:40 Uhr)
Mit Zitat antworten

  #17  
Alt 06.06.2017, 06:47
Benutzerbild von Haxley
Haxley Haxley ist offline
Registered User
 
Registriert seit: 05.2011
Beiträge: 89
Hallo,
danke Euch, ich hab das jetzt so:
PHP-Code:
if ($argv[1] = 'cron0815') { 
und das geht.
Es wird halt geprüft ob die Systemvariable den Wert enthält, wenn ja dann wird das Script ausgeführt. Grund ist, dass das Script nicht so einfach von extern aufgerufen werden kann, da es im Web Root liegt.

Im crontab sieht das so aus:
PHP-Code:
10 5 * * * root /usr/bin/php /var/www/auto_berechnung.php -cron0815 1> /var/log/cronjob_ber_1.log 2> /var/log/cronjob_ber_2.log 
Geht soweit.

Aber ein Frage noch:

Mein cron läuft nicht mit der Systemzeit synchron, wie kann das sein und wie kann ich das beheben?
Kommando "date" in der Shell gibt die korrekte Uhrzeit aus. Crontab ist aber 2 Stunden verspätet. Beispiel: Ich lasse ein Script aller 10 min ausführen, dann steht im Log: Jun 6 04:20:01 franklin /USR/SBIN/CRON
Systemzeit ist aber Tue Jun 6 06:21:03 CEST 2017

Wenn ich ein Cronjob 6 Uhr laufen lassen möchte muss ich in der Crontab 4 Uhr eintragen.
Wie bekomme ich das Syncron?
Nutze übrigens Debian.

Tausend Dank nochmals.
Gruß Haxley
Mit Zitat antworten
  #18  
Alt 06.06.2017, 10:20
Benutzerbild von danton
danton danton ist offline
Registered User
 
Registriert seit: 04.2009
Ort: Ennigerloh
Alter: 44
Beiträge: 2.406
Wo Cronjob reinschreiben?
Zitat:
Zitat von Haxley Beitrag anzeigen
Hallo,
danke Euch, ich hab das jetzt so:
PHP-Code:
if ($argv[1] = 'cron0815') { 
und das geht.
Wenn du es genauso geschrieben hast, funktioniert es nicht so, wie du es haben möchtest. Das einfache Gleichzeichen ist ein Zuweisungsoperator, der normalerweise immer ein TRUE erzeugt (du weist $argv[1] den Wert "cron0815" zu) - du willst aber einen Vergleichsoperator nutzen (doppeltes bzw. dreifaches Gleichzeichen, siehe oben von GwenDragon verlinkte Doku).

Zitat:
Es wird halt geprüft ob die Systemvariable den Wert enthält, wenn ja dann wird das Script ausgeführt. Grund ist, dass das Script nicht so einfach von extern aufgerufen werden kann, da es im Web Root liegt.
Du kannst im Script auch abfragen, ob das Script per Apache-Modul, CGI oder CLI aufgerufen wurde, siehe http://php.net/manual/en/function.php-sapi-name.php

Zitat:
Mein cron läuft nicht mit der Systemzeit synchron, wie kann das sein und wie kann ich das beheben?
Wird er schon machen, aber ich vermute, dass bei dir die Zeitzonen ein wenig durcheinander sind (GMT und CEST)
__________________
Event-List - PHP/MySQL-Veranstaltungskalender für die eigene Homepage
Mit Zitat antworten
  #19  
Alt 06.06.2017, 10:36
Benutzerbild von DjTom-i
DjTom-i DjTom-i ist offline
verifizierter Anbieter
 
Registriert seit: 04.2005
Ort: Menden
Alter: 42
Beiträge: 700
DjTom-i eine Nachricht über ICQ schicken DjTom-i eine Nachricht über MSN schicken Wo Cronjob reinschreiben?
Zitat:
Zitat von Haxley Beitrag anzeigen
Aber ein Frage noch:

Mein cron läuft nicht mit der Systemzeit synchron, wie kann das sein und wie kann ich das beheben?
Kommando "date" in der Shell gibt die korrekte Uhrzeit aus. Crontab ist aber 2 Stunden verspätet. Beispiel: Ich lasse ein Script aller 10 min ausführen, dann steht im Log: Jun 6 04:20:01 franklin /USR/SBIN/CRON
Systemzeit ist aber Tue Jun 6 06:21:03 CEST 2017
Code:
dpkg-reconfigure tzdata
__________________

:: Serverman Webhosting Inhaber Thomas Toka :: Mastermind des http://rootrobot.com ::
:: Administration :: Housing :: Rootserver :: Gameserver :: Servermanagement ::
:: Droste-Hülshoff-Str. 11 58708 Menden Tel.: 02373-389140 http://www.serverman.de ::
Mit Zitat antworten
  #20  
Alt 06.06.2017, 11:52
GwenDragon GwenDragon ist offline
Registered User
 
Registriert seit: 12.2008
Ort: Franken
Alter: 57
Beiträge: 2.970
Zitat:
Zitat von Haxley Beitrag anzeigen
(…) ich hab das jetzt so:
PHP-Code:
if ($argv[1] = 'cron0815') { 
und das geht.
Es wird halt geprüft ob die Systemvariable den Wert enthält, wenn ja dann wird das Script ausgeführt.
Sicher geht das, sowas nennt man schlampig programmiert und fehlende Fehlerprüfung durch PHP.

Es wird nicht geprüft ob die Systemvariable den Wert enthält, sondern du setzt so die Systemvariable immer auf einen wahren Wert, und dann ist die IF-Abfrage immer wahr und der nachfolgende Block gilt.

Du kannst dann auch schreiben:
PHP-Code:
if (TRUE) { 


Dein obiger Code ist ein extremer Anfängerfehler. Lernst du gerade PHP? oder kopierst du einfach von irgendwo Quellcode ohne Hintergrundwissen was das tut?
__________________
die Gwen, also die Drachin... nix anderscht!

Geändert von GwenDragon (06.06.2017 um 12:00 Uhr)
Mit Zitat antworten
  #21  
Alt 06.06.2017, 17:58
Benutzerbild von nexus
nexus nexus ist offline
Registered User
 
Registriert seit: 06.2011
Beiträge: 1.439
Zitat:
Zitat von Haxley Beitrag anzeigen
Grund ist, dass das Script nicht so einfach von extern aufgerufen werden kann, da es im Web Root liegt.
Ist das wirklich notwendig, daß das Script im Webroot liegen muß?
Wenn sich ein Angreifer Schreibrechte im Webroot verschaffen kann, dann könnte er eigenen Code in das Script einschleusen und da das Script als root ausgeführt wird, könnte er sich über diesen Angriffsvektor root-Rechte auf dem Server verschaffen und den kompletten Server hijacken...
__________________
Ist ein Server das Richtige für mich? -> Entscheidungshilfe und Erste Schritte
Lesenswert für alle Mailserver-Admins -> Best Practice für stressfreie Mailserver
Server- und Hostinganbieter, die ich empfehlen kann -> PHP-Friends, IP-Projects, Keyweb, Netcup
Hier gibt es alle Infos zu Schulferien (Insider wissen, was ich meine ) -> schulferien.org
Mit Zitat antworten
  #22  
Alt 09.06.2017, 09:49
Benutzerbild von Haxley
Haxley Haxley ist offline
Registered User
 
Registriert seit: 05.2011
Beiträge: 89
Zitat:
Dein obiger Code ist ein extremer Anfängerfehler. Lernst du gerade PHP? oder kopierst du einfach von irgendwo Quellcode ohne Hintergrundwissen was das tut?
Fehler macht jeder mal. Ich hab mit den systemeigenen Variablen aber noch keine Erfahrung. Aber wird auch.. ;-)
Zitat:
Ist das wirklich notwendig, daß das Script im Webroot liegen muß?
Nun das Script nutzt PHP und der PHP Interpreter läuft doch nicht mit systemweitem Zugriff sondern begrenzt auf das Webroot oder irre ich mich da?
Auch nutze ich Datenbankfunktionen welche im WebRoot definiert werden. Wie soll ich die extern ausführen?
Ich gebe Dir recht, für reine Datenbankanweisungen wäre es z.B. mit:
PHP-Code:
exec("mysql -h $server_name -u $username -p $password $database_name .... 
möglich aber so ist es leider nicht. Dann müsste ich das alles in Phyton machen und davon hab ich nicht viel Ahnung.

Ich danke Euch für die Hilfe!
Gruß Haxley
Mit Zitat antworten
  #23  
Alt 09.06.2017, 15:56
Benutzerbild von Joe User
Joe User Joe User ist offline
Registered User
 
Registriert seit: 11.2008
Ort: Hamburg
Alter: 39
Beiträge: 3.869
Da wir Dir hier nicht mal eben PHP beibringen können, solltest Du Dir dringend entsprechende Literatur besorgen und mit dem Lernen beginnen.

Währenddessen können wir allerdings erstmal dafür sorgen, dass Dein obiges Script keinen allzu grossen Schaden anrichtet und halbwegs sicher ist. Dazu postest Du bitte das vollständige Script und wir beseitigen die gröbsten Fehler.

Damit das Ganze auch einen Lerneffekt hat, bekommst Du natürlich auch Hausaufgaben in Form der unkritischen Fehler, welche Du nach und nach selbst behebst und uns Deine Lösung(en) hier mitteilst.

Das Ganze wird selbstverständlich nicht in wenigen Tagen erledigt sein, so dass Du Dir vorher darüber im Klaren sein solltest, dass diese Aktion nur funktioniert, wenn Du Deinen Teil der Abmachung auch einhälst.

Alternativ musst Du Dir einen PHP-Programmierer suchen und bezahlen, damit dieser dann Dein Script neu schreibt. Das wird unter Umständen recht teuer und Du lernst nichts dabei...

Deine Entscheidung
__________________
PayPal.Me/JoeUserWings for LifeWings for Life World Run
RootForum CommunityFreeBSD Remote InstallationFreeBSD Web Hosting System

„If there’s more than one possible outcome of a job or task, and one of those outcomes will result in disaster or an undesirable consequence, then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Mit Zitat antworten
Antwort

Lesezeichen


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Cronjob für PHP Script absichern Haxley Webserver 3 18.05.2017 07:43
Bash-Skript läuft auf einem Server nicht 100% als Cronjob Amyris Perl / PHP / Python / bash 5 04.11.2008 13:56
Cronjob startet nicht / Magic Button ATLAS ViSAS / Serveradmin24 19 12.04.2008 20:19
Cronjob timeout / cronjob automatisch abschießen FiX Sonstige Serverdienste 3 20.05.2007 20:49
Cronjob problem bei Server4You hagu Dedizierte Server 2 29.10.2005 22:06


Wo Cronjob reinschreiben?
Wo Cronjob reinschreiben?
Wo Cronjob reinschreiben? Wo Cronjob reinschreiben?
Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Search Engine Optimisation provided by DragonByte SEO (Pro) - vBulletin Mods & Addons Copyright © 2017 DragonByte Technologies Ltd.