Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : (Lohn: Ioncube kostenlos) Wie Bash-Optionen aus PHP verarbeiten



Das_Gnu
09-11-2002, 03:08
Ich habe noch nie ein "wirkliches" Shellscript erstellt ausser per Paste'nCopy
Soviel zu den Vorraussetzungen :confused:
Ich bin gerade dabei, eine PHP-basierte Support-Oberfläche zu erstellen, die aus CVS die jeweils aktuellste Download-Version eines Programmes holt, dieses mit . Ioncube Encoder (http://www.ioncube.com) verschlüsselt und anschließend gepackt in den Downloadbereich des Members ablegt.
Leider hakt es bei den PHP-Kommandozeilen-Befehlen etwas mit CVS und Ioncube, so dass ich über eine .sh-Datei arbeiten muss.
Folgendes test.sh

cd /web/httpd/htdocs/support/download
cvs -d /usr/cvs export -D 2002-10-26 Modulname
cd /web/httpd/htdocs/support/download/Modulname
tar cfz Modulname.tgz *
funktionierte bei mir, wenn ich es über

<?
exec("test.sh")
?>
aufrufe. Auch mit dem IONCUBE-Befehl ...
Ausgangspunkt ist nun folgendes rudimentäres - mit vielen vom PHP-Script übergebenen Variablen, bei denen ich nicht weiss,
wie man sie im Shell-Script verabeiten kann.
modul_export.sh:
#! /bin/bash
#
# ERSTELLEN DER ENCODIERTEN VERSION
# EINES CVS-MODULS

# Variablen:
# /path/to/ioncube => Pfad zum Encoder (siehe www.ioncube.com)
# modul => Name des CVS-Modules
# today => Tagesdatum im Format 2002-10-26
# qverz => Pfad der exportierten Dateien
# zverz => Encoder-Ziel-Pfad
# WWW Download DIR => Zielverzeichnis der zum Download
# bereitgestellten tgz- oder Zip-Datei
# include => zusaetzlich zu encodierende Dateien und Verzeichnisse
# exclude => nicht zu encodierende Dateien und Verzeichnisse
#
# erase-target => bestehendes Zielverz. loeschen
# ODER rename-target => bestehendes Zielverz. umbenennen
# ODER --merge-target => bestehendes Zielverz. updaten
#
# expire-on => Testversion arbeitet bis yyyy-mm-dd
# ODER expire-in => Testversion laeuft d Tage ODER h Stunden. ODER m Minuten
#
# allowed-ip-addr => IP, auf der das programm laufen darf
# ODER SUBNET
# allowed-ip-addr=xxx.xxx.xxx.xxx
# allowed-ip-mask=xxx.xxx.xxx.xxx
#
# ...


cd <#/path/to#>/ioncube/src

cvs -d /usr/cvs export -D <#today#> <#modul#>

cd <#/path/to#>/ioncube

# Folgender Code muss eigentlich in einer Zeile stehen
# aber der Uebersicht halber mal mit Umbruechen
./ioncube/ioncube_encoder <#qverz#>/<#modul#> -o <#zverz#>/<#modul#>
[--verbose]
[--exclude=<BeispielVerz: <#/path/to#>/ioncube/src/template/>]
[--include=<Beispielwert: <#/path/to#>/ioncube/src/template/*.inc>]
[--exclude=<Beispielwert: <#/path/to#>/ioncube/src/datei.conf> ...
# [ --include= ... UND --exclude= ... sind beliebig erweiterbar,
# aber aus PHP uebergebene Reihenfolge muss stimmen]
[ --erase-target ODER --rename-target ODER --merge-target ]
[--expire-on=yyyy-mm-dd]
[--expire-in=7d ODER 8h <d = Tage ODER h = Std. ODER m = Min.>]
[--allowed-ip-addr=<192.168.1.12>]
# ODER SUBNET
[--allowed-ip-addr=<192.168.1.0> --allowed-ip-mask=<255.255.255.0>]
[ --noch-ein-paar-args=<argument> ]
[ --noch-ein-paar-vars ]
...
cd <#zverz#>/<#modul#>

tar cvfz <#WWW Download DIR#>/<#modul#>.tgz *

done
echo "OK"
exit
esac
Kann jemand dieses Bash-Script für mich schreiben, so dass es meine
Values aus dem PHP-Script übernimmt?
Als Gegenleistung biete ich an, dass derjenige seine PHP-Scripte mit IONCUBE für ein Jahr kostenlos bei uns verschlüsseln kann.

Vielen Dank
Guido

fork
09-11-2002, 16:16
> Als Gegenleistung biete ich an, dass derjenige seine PHP-Scripte mit IONCUBE für ein Jahr
> kostenlos bei uns verschlüsseln kann.

Schön aber nutzlos.

Nützliche Links sind in meiner Signatur

Nochmal ein komplexeres Beispiel zu dem was Du schon mir hast.



#!/bin/bash
# alle Argumente überprüfen
for PAR in $@ ; do
# Prüfen ob die ersten beiden Zeichen Minuszeichen sind
if [ $(echo $PAR| cut -c1-2) == "--" ]
then
# Den Namen der Long Option extrahieren
LONG_OPT=$(echo $PAR | cut -c3- | cut -d= -f1)
# Den Inhalt des Optionswertes extrahieren
OPT_VAL=$(echo $PAR | cut -d= -f2)
# Prüfen ob die entsprechende Option gesetzt wurde und interne Variable versorgen
[ $LONG_OPT == "ioncube_path" ] && eval $LONG_OPT="$OPT_VAL"
[ $LONG_OPT == "modul" ] && eval $LONG_OPT="$OPT_VAL"
[ $LONG_OPT == "today" ] && eval $LONG_OPT="$OPT_VAL"
[ $LONG_OPT == "qverz" ] && eval $LONG_OPT="$OPT_VAL"
[ $LONG_OPT == "zverz" ] && eval $LONG_OPT="$OPT_VAL"
[ $LONG_OPT == "www_download_dir" ] && eval $LONG_OPT="$OPT_VAL"
[ $LONG_OPT == "include" ] && eval $LONG_OPT="$OPT_VAL"
[ $LONG_OPT == "exclude" ] && eval $LONG_OPT="$OPT_VAL"

# Eine Boolean_Option setzen
[ $LONG_OPT == "erase_target" ] && eval $LONG_OPT=1
fi
done

echo "IONCUBE PFAD : $ioncube_path"
echo "Modul : $modul"

# Aufruf: ./this_program [ --ioncube_path=<path> ] [ --modul=<modulname> ] [ --erase_target ] ...