script duplizieren

für eine „einrichtungsscript“ wollte ich ein script als template hinterlegen und dann an die instanzen kopieren.

ein script per php anlegen bekomme ich hin aber den inhalt? auch wenn ich ein script per php angelegt hab, wird es mir im objektbaum angezeigt aber ich kann es nicht speichern. habt ihr ne idee?

Hallo mäc,

hier mal meine zusammengebauten Codesnippets die ich mit Hilfe des Forums hinbekommen habe. (Das ist das was IPS ausmacht).

In die Variable $Script den Inhalt den dein Zielskript haben soll.

Der Functionsaufruf sollte klar sein.

<?
// Übergeordnete Kategorie ermitteln
$parentID = IPS_GetObject($IPS_SELF);
$parentID = $parentID['ParentID'];
// Inhalt des benötigten Actionsskripts in Variable ablegen
$Script = "<?
if(\$IPS_SENDER == 'WebFront') {
   SetValue(\$IPS_VARIABLE, \$IPS_VALUE);
}
?>";
// Actionskript erzeugen (siehe function)
$ScriptID = CreateScriptByName("Skriptname", $parentID, $Script);
echo "Skript angelegt
";
 

function CreateScriptByName($ScriptNAME, $ParentID, $ScriptTEXT)
 {
 global $IPS_SELF;
 $ScriptID = @IPS_GetScriptIDByName($ScriptNAME, $ParentID);
 if ($ScriptID == 0){
  $ScriptID = IPS_CreateScript(0);
  IPS_SetName($ScriptID, $ScriptNAME);
  IPS_SetParent($ScriptID, $ParentID);
  IPS_SetInfo($ScriptID, "This script was created by: #$IPS_SELF#");
  $fh = fopen(IPS_GetKernelDir()."scripts\\".$ScriptID.".ips.php", 'w') or die("can't open file");
  fwrite($fh, $ScriptTEXT);
  fclose($fh);
  $ScriptPath = $ScriptID.".ips.php";     //Skriptdatei
  IPS_SetScriptFile($ScriptID, $ScriptPath);
  IPS_SetHidden($ScriptID, true);
  IPS_SetPosition($ScriptID, 98);
 }
return $ScriptID;
}

?>

danke, werd ich gleich mal probieren.

ok, direkt die datei schreiben, daran hab ich gar nicht gedacht. da fällt mir gleich noch ne optimierung in auge. das script aus einem template auch lesen anstelle der variablen. werd ich hier posten wenn ich es ausprobiert hab.

also wenn ich mal positives feedback geben könnte. nun versuche ich seit zwei WAF unakzeptablen stunden ne script datei über fopen und fread ein zu lesen. ich werd irre.

immer wenn ich bis an das ende mit fread(filehandler, filesize($filename)) der datei lese bekomme ich keine daten. aber mit filesize($filename)-1 erhalte ich daten. allerdings wie -1 schon sagt, ein zeichen zu wenig.

weitere versuche mit fgets haben auch nicht geholfen.

wäre klasse wenn ihr aushelfen könnt?

PS: php kenne ich eigentlich nicht da ich aus nem anderem sprachenlager komme. aber jetzt nach zwei stunden mit google hoch und runter ist schluss

probier es mal hiermit. file_get_contents

sorry, geht nicht. einige dateien können gelesen werden.
kann es sein das ips diese im zugriff hat und man sie nicht lesen kann? es kommt allerdings keine fehlermeldung.

ich weiss nicht wo der unterschied zwischen lesbaren und „nicht lesbaren“ ist.

AHHHH, Ok das passiert mir auch nur einmal.
ich hatte das ergebnis per echo ausgegeben. es war der haken „html filtern“ gesetzt ! Grrr. den entfernen und schon seh ich alles.

man jetzt schon 2,5 stunden meines lebens verschwendet. wo war doch der thread wieviel zeit man mit ips verbringt?