Shellskript, Cronjob und Apache

Armin

New Member
Hallo,

ich habe ein paar Fragen zu zwei unterschiedlichen Themen, wo ich mich bis jetzt schlecht auskenne.

1) Ich würde gerne im Webbrowser ohne mich einzuloggen, in einem htaccess geschützen Unterverzechnis mit einem script.php, pl oder so, einen ./script.sh ausführen.

Wie funktioniert das? Und was muss ich (sicherheitsbedingt) beachten?

2) Ist es möglich das ein Cronjob meinen Teamspeak2 Server alle 5 Minuten checkt ob er online ist? Das Script wird mit ./teamspeak2-startscript start, restart oder stop gesteuert.

Wie funktioniert das ebenfalls? Muss ich da auch was sicherheitsbedenkliches beachten?
 
Hi,
1) Ich würde gerne im Webbrowser ohne mich einzuloggen, in einem htaccess geschützen Unterverzechnis mit einem script.php, pl oder so, einen ./script.sh ausführen.
Kannst du das noch etwas genauer erklären? Ich weiß nicht genau was du vorhast ;)
2) Ist es möglich das ein Cronjob meinen Teamspeak2 Server alle 5 Minuten checkt ob er online ist? Das Script wird mit ./teamspeak2-startscript start, restart oder stop gesteuert.
Ja das ist möglich.
Du könntest dir ein Shellscript schreiben, welches prüft ob der Prozess noch läuft und ggf. den Server neustarten.
 
Hi,

Kannst du das noch etwas genauer erklären? Ich weiß nicht genau was du vorhast ;)

Ja das ist möglich.
Du könntest dir ein Shellscript schreiben, welches prüft ob der Prozess noch läuft und ggf. den Server neustarten.

Hallo djrick,

1) ich möchte gerne eine scriptdatei auf den server stellen die z.B. einen Teamspeak server neustartet.

2) Das problem daran ist, das das ganze 4 Instanzen sind die gleich heissen aber mit unterschiedlichen Ports. Wie könnte man das unterscheiden?
 
Nein ich rede von der htaccess Datei und dem Script. Da versteh ich noch nicht so genau was du vorhast.

Man kann das so unterscheiden:
Code:
netstat -tulpe
Listet dir alle Programme die an irgendeinem Port "lauschen". Wenn ein bestimmter Port nicht gelistet wird, kann man davon ausgehen, dass der Prozess nicht läuft.
 
Nein ich rede von der htaccess Datei und dem Script. Da versteh ich noch nicht so genau was du vorhast.

Man kann das so unterscheiden:
Code:
netstat -tulpe
Listet dir alle Programme die an irgendeinem Port "lauschen". Wenn ein bestimmter Port nicht gelistet wird, kann man davon ausgehen, dass der Prozess nicht läuft.

Also ich meinte das so, ich habe ein Verzeichnis wo eine .htaccess drauf ist, funktionsweise ist mir bekannt. Dort soll dann ein Skript liegen was mir ein Programmrestart wie z.B. von einem Teamspeak Server Remote und ohne mich mit ssh verbindenzu müssen ermöglicht.

Der Befehl ist gut :-) Danke, wie könnte mann den das Sortieren? Ich hab ja leider noch keine ahnung von Shellscripten etc.

Folgende Ports sollten immer an sein
[A] 7000
[A] 8000
8767
2337
[C] 80
[D] 21

A-D sind in dem Beispiel Programmem, wie TS2, Apache und FTP. Unter PHP hätt ich das ganze mit ner if abfrage gemacht, nur wie bereits wie oben schon geschildert kenn ich mich mit Shellscripts nicht aus.
 
Wenn du dich mit php auskennst, dann schreibst doch in php :)
Auch php Scripts kann man per Crontab ausführen lassen:
Code:
/pfad/zu/bin/php /pfad/zum/script
 
richtig :-) Nur mir ist halt nicht ganz klar wie ich mit php überprüfen soll ob ein Server läuft. Hast Du da vielleicht für mich ein paar Tricks?
 
Hi,
Code:
#!/bin/sh
ports=( www smtp wwws );
net=$(netstat -tulpe);
for port in ${ports[@]}
do
        if echo $net | grep -q $port
        then
                echo 'running';
        else
                echo 'not running';
        fi;
done;
wwws war zum Testen weil da kein Prozess hinter läuft.

Mit freundlichen Grüßen
Flobbie
 
richtig :-) Nur mir ist halt nicht ganz klar wie ich mit php überprüfen soll ob ein Server läuft. Hast Du da vielleicht für mich ein paar Tricks?
Mal abgesehen davon dass flobbie gerade eine gute Lösung gepostet hat: Mit PHP kann man auch testen ob ein Port offen ist :) - fopen ist hier das Stichwort.
 
Das mit dem fopen ist mir bekannt :-) Danke.

So jetzt möchte ich gerne mit

$run = exec("var/ts2/teamspeak2-startscript restart");
echo "$run";

Den Server neustarten, dann kommt aber server_linux is missing, das ist die Datei wo er ausführt. Wenn ich die server_linux benutze kommt tsserver.pid is missing.

er denkt dann quasi das dass script im Webordner ist, wo es aber nicht ist.

Wie kann man das fixen?
 
Hallo!
Er findet server_linux nicht. Wird im Startscript der Pfad zu server_linux vollqualifiziert angegeben oder steht nur ./server_linux drin?

mfG
Thorsten
 
Hallo Thorsten,

folgendes, ich bekomme nun folgende Fehlermeldung:
server_linux is not executable, trying to set it

Die Pfade im Teamspeaks2serverstartscript habe ich angepasst.

Meine PHP Datei spuckt bei

<?
$run = exec("/root/ts2/teamspeak2-server_startscript start");
echo "$run";
?>
<?
$run = exec("/root/ts2/./teamspeak2-server_startscript start");
echo "$run";
?>

server_linux is not executable, trying to set it
das aus und bei
<?
$run = exec("/root/ts2/./server_linux");
echo "$run";
?>
und
<?
$run = exec("/root/ts2/server_linux");
echo "$run";
?>

bleibt die Meldung weiß, aber der Server startet auch nicht.
 
Bringt mir leider nur eine weiße Seite und der Server bleibt trotzdem da, bzw. startet nicht.

Im TSPerlmod wurde das so gelöst:

echo exec('#!/bin/bash
cd /root/ts2/
./teamspeak2-server_startscript restart');

mit ein paar if { abfragen um den Status zu checken, aber das funktioniert leider auch nicht.
 
Hi,

poste mal bitte die Ausgaben von
Code:
stat /root/ts2/teamspeak2-server_startscript && stat /path/to/server_linux

Ich habe da schon eine bestimmte Vermutung ;)


-W
 
Code:
/var/ts2$ stat /var/ts2/teamspeak2-server_startscript && stat /var/ts2/server_linux
  File: »/var/ts2/teamspeak2-server_startscript«
  Size: 2465      	Blocks: 8          IO Block: 4096   reguläre Datei
Device: 301h/769d	Inode: 115234      Links: 1
Access: (0777/-rwxrwxrwx)  Uid: ( 1002/ UNKNOWN)   Gid: (  100/   users)
Access: 2009-06-02 19:12:02.000000000 +0200
Modify: 2004-03-09 13:40:07.000000000 +0100
Change: 2009-05-30 22:51:09.000000000 +0200

Code:
 File: »/var/ts2/server_linux«
  Size: 948232    	Blocks: 1864       IO Block: 4096   reguläre Datei
Device: 301h/769d	Inode: 115233      Links: 1
Access: (0777/-rwxrwxrwx)  Uid: ( 1002/ UNKNOWN)   Gid: (  100/   users)
Access: 2009-06-02 19:12:02.000000000 +0200
Modify: 2007-08-02 13:50:31.000000000 +0200
Change: 2009-05-30 22:51:02.000000000 +0200

Hab das Script jetzt von dem root ins var verschoben.
 
Back
Top