Musterclient für Schulen

Beinhaltet den gesamten Aufbau des Musterclients für Schulen.

Tabs

Functions

Untis

Idealer Weise erscheinen die Pläne aus Untis nach dem Export aus Untis automatisch in ILIAS. Dazu kann ich diesen Weg anbieten:
  1. Sie erstellen in Untis diverse Pläne (Raum, Lehrer, Klassen, Vertretung) und exportieren diese als HTML-Dateien auf einen Ordner im Netzwerk Ihrer Schule (meistens das Verwaltungsnetz)
  2. Sie laden diese Pläne mit einem Skript via WebDAV in einen ILIAS-Ordner (oder Kategorie) Namens "Untisquelle". Damit befinden sich die Pläne schon mal im Internet.
  3. Nun laden Sie die Pläne von ILIAS wieder über WebDAV herunter in den Ort /var/scripts Ihres ILIAS-Servers. Die Pläne befinden sich also auf dem Dateisystem des ILIAS-Servers und können...
  4. ...von dort aus in ILIAS-HTML-Lernmodule kopiert werden. Ist kompliziert, funktioniert aber seit Jahren extrem zuverlässig und ist eigentlich nur eine Sache von 2 Stunden und dann von viel Ruhe...

Wie bekommen wir nun die Untis-Dateien in den Ordner "Untisquelle"?

Zunächst: Erstellen Sie irgendwo in ILIAS einen Ordner oder eine Kategorie mit dem Namen "Untisquelle". Natürlich ist der Name frei wählbar. Kopieren Sie sich den WebDAV-Link (Aktionen->WebDAV) irgendwohin, wir benötigen ihn gleich.
Die folgenden Arbeiten führen Sie an dem Windows-PC durch, auf dem Untis läuft. Dieser PC muss WebDAV-fähig sein. Dazu ist es in der Regel erforderlich, den Service "WebClient" zu starten (Startoption: automatisch). Die Aktivierung dieses Dienstes ist in meinen Augen aus Sicherheitsgründen völlig unbedenklich. Dieser Schritt erfordert Administratoren-Rechte und muss nur einmal durchgeführt werden.
Der Upload erfolgt mit einem Windows-Powershell-Script, was eine bequeme Sache ist: Ein Doppelklick auf die Skriptdatei, der Rest geht automatisch.
Wir starten nicht das Powershell-Skript, sondern eine elegante kleine EXE-Datei mit eigenem Icon.  Mit anderen Worten: Wir werden das Script zu einer exe-Datei kompilieren. Dazu müssen Sie sich PowerGui (kostenlos) installieren und dann unter Tools-Compile Script den die Kompilierung starten (Anleitung). Eine Sache von einer Minute.
Erstellen Sie in Windows das Powershell-Skript in Form einer Textdatei mit einem beliebigen Texteditor (z.B. Notepad++) mit der Endung ps1, also z.B.

Untis_zu_ILIAS.ps1

und kopieren Sie das folgende Script hinein:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
$ErrorActionPreference = "SilentlyContinue"
#v27
$stop = 0
$errorlevel = 0
#Gebe x Unterordner ein, nach denen geprüft werden soll, ob sie vorhanden sind.
$ordner1x = "Klassen"
$ordner2x = "Lehrkraefte"
$ordner3x = "Raeume"
$ordner4x = ""
$ordner5x = ""

#Ordnerpfad zu den Stundenplänen (wenn leer, wird der relative Pfad automatisch ermittelt)
#Ohne abschließenden Backslash \
$path = "T:\Stundenplan\Stunden_Vertretungsplaene_Aktuell"
#$path = ""
#Wenn Autologin gewünscht, hier Daten eingeben. Wenn leer, werden die Daten abgefragt.


$UserName = "username"
$Password = "password"

#WebDAV-Link des Ordners, der alle Unterordner aufnehmen soll
$ShareName = "https://domain.tld/ilias/webdav.php/iliasschoolmaster/ref_171/"

#Laufwerksbuchstabe, unter dem das WebDAV-Laufwerk gemappt werden soll
$DriveName = "B:"

#Gibt es eine PHP-Datei, die das Script ausführen soll?
$phppath="https://somain.tld/special/untisup.php"

################################################
#Ab hier sind keine Einstellungen erforderlich.#
################################################
$a = (Get-Host).UI.RawUI
$a.BackgroundColor = "black"
$a.ForegroundColor = "cyan"



if ($path -eq "")
{
$path = get-location
Set-Location $path
write-host $path


}
else
{
Set-Location $path

if ($ordner1x) {$ordner1 = $path+"\"+$ordner1x}
if ($ordner2x) {$ordner2 = $path+"\"+$ordner2x}
if ($ordner3x) {$ordner3 = $path+"\"+$ordner3x}
if ($ordner4x) {$ordner4 = $path+"\"+$ordner4x}
if ($ordner5x) {$ordner5 = $path+"\"+$ordner5x}

}

do
{
#clear-host
write-host "________________________________________________________________________________" -foregroundcolor "cyan"
write-host "ILIAS-Stundenplan-Sync-Tool - Version 1.0.0" -foregroundcolor "cyan"
Write-Host "Letzte Änderung: 28.01.2016"
Write-Host "" -foregroundcolor "cyan"
write-host "________________________________________________________________________________" -foregroundcolor "cyan"
write-host
#Läuft der Service WebClient?
$webclient = Get-Service WebClient
If ($webclient.Status -ne "Running")
{
write-host "Der Web-Client-Service läuft nicht. " -f red
write-host

$errorlevel++
}
else
{
write-host "Der Web-Client-Service läuft." -f green
}
#Prüfe, ob Ordner vorhanden sind
write-host
$checkordner = $ordner1

if ($checkordner)
{

$count = 0
if (test-path $checkordner)
{

$count = @(Get-ChildItem -Path $checkordner"\" -Filter *.htm -Recurse | where-object {-not ($_.PSIsContainer)}| Where-Object {$_.name -notmatch '^~.*'}).count
if ($count -gt 0)
{
write-host "Der Ordner $checkordner ist vorhanden und enthält $count HTML-Dateien." -f green
}
else
{
write-host "Der Ordner $checkordner enthält keine HTML-Dateien." -f red
$errorlevel++
}

}
else
{
write-host "Der Ordner $checkordner ist nicht vorhanden." -f red
$errorlevel++
}
}
write-host
if ($ordner2)
{
$checkordner = $ordner2
$count = 0
if (test-path $checkordner)
{

$count = @(Get-ChildItem -Path $checkordner"\" -Filter *.htm -Recurse | where-object {-not ($_.PSIsContainer)}| Where-Object {$_.name -notmatch '^~.*'}).count
if ($count -gt 0)
{
write-host "Der Ordner $checkordner ist vorhanden und enthält $count HTML-Dateien." -f green
}
else
{
write-host "Der Ordner $checkordner enthält keine HTML-Dateien." -f red
$errorlevel++
}

}
else
{
write-host "Der Ordner $checkordner ist nicht vorhanden." -f red
$errorlevel++
}
}
write-host
if ($ordner3)
{
$checkordner = $ordner3
$count = 0
if (test-path $checkordner)
{

$count = @(Get-ChildItem -Path $checkordner"\" -Filter *.htm -Recurse | where-object {-not ($_.PSIsContainer)}| Where-Object {$_.name -notmatch '^~.*'}).count
if ($count -gt 0)
{
write-host "Der Ordner $checkordner ist vorhanden und enthält $count HTML-Dateien." -f green
}
else
{
write-host "Der Ordner $checkordner enthält keine HTML-Dateien." -f red
$errorlevel++
}

}
else
{
write-host "Der Ordner $checkordner ist nicht vorhanden." -f red
$errorlevel++
}
}
write-host
if ($ordner4)
{
$checkordner = $ordner4
$count = 0
if (test-path $checkordner)
{

$count = @(Get-ChildItem -Path $checkordner"\" -Filter *.htm -Recurse | where-object {-not ($_.PSIsContainer)}| Where-Object {$_.name -notmatch '^~.*'}).count
if ($count -gt 0)
{
write-host "Der Ordner $checkordner ist vorhanden und enthält $count HTML-Dateien." -f green
}
else
{
write-host "Der Ordner $checkordner enthält keine HTML-Dateien." -f red
$errorlevel++
}

}
else
{
write-host "Der Ordner $checkordner ist nicht vorhanden." -f red
$errorlevel++
}
}
write-host
if ($ordner5)
{
$checkordner = $ordner5
$count = 0
if (test-path $checkordner)
{

$count = @(Get-ChildItem -Path $checkordner"\" -Filter *.htm -Recurse | where-object {-not ($_.PSIsContainer)}| Where-Object {$_.name -notmatch '^~.*'}).count
if ($count -gt 0)
{
write-host "Der Ordner $checkordner ist vorhanden und enthält $count HTML-Dateien." -f green
}
else
{
write-host "Der Ordner $checkordner enthält keine HTML-Dateien." -f red
$errorlevel++
}

}
else
{
write-host "Der Ordner $checkordner ist nicht vorhanden." -f red
$errorlevel++
}
}

#Check: Kann es losgehen? Errorlevel OK?
if ($errorlevel -gt 0)
{
write-host
write-host "Es wurden $errorlevel Fehler festgestellt. Upload nicht möglich." -f yellow
write-host
read-host "Drücken Sie die Eingabetaste, um das Programm zu beenden."
exit

}

if ($UserName -eq "")
{
#Erzeugt Login-Fenster

$UserName = read-host "Bitte ILIAS-Usernamen eingeben"
if ($Username -eq "")
{
Write-Host "Kein Benutzername eingegeben, Programm wird geschlossen." -ForegroundColor red
Start-Sleep -s 5
exit
}
else
{
#Check if User Null

$pass1 = read-host "Bitte ILIAS-Passwort eingeben" -assecurestring
#decode password

$pass2=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pass1)
$Password=[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($pass2)
if ($Password -eq "")
{

Write-Host "Kein Passwort eingegeben, Programm wird geschlossen." -ForegroundColor Red
Start-Sleep -s 5
exit
}
}
}
else
{
write-host "Starte Loginversuch mit User $UserName"
write-host

}

#Alte Verbindung löschen
net use $DriveName /d /y
$i=1
do
{
Write-Host "Versuch Nr. $i"
$output = net use $DriveName $ShareName $Password /user:$UserName /persistent:no 2>null
$i++
Start-Sleep -s 2
}
until ($output -like "*erfolgreich*" -or $i -eq 4)

if ($output -like "*erfolgreich*")

{
write-host "________________________________________________________________________________" -foregroundcolor "cyan"

write-host "Login erfolgreich!" -f green
#write-host "(Auch wenn die Meldung Netzwerkverbindung nicht gefunden erscheint)." -f green
write-host

#Beginn Spiegelung nach ILIAS

write-host "Alles im Ordner $path"
write-host "wird nach ILIAS gespiegelt."
write-host
write-host "Bitte warten. Solange der Curser blinkt, läuft der Prozess."-f green

if($ordner1)
{
write-host "Bearbeite "$ordner1

robocopy $ordner1 $DriveName"\"$ordner1x /MIR /R:2 /W:5
}
if($ordner2)
{
write-host "Bearbeite "$ordner2

robocopy $ordner2 $DriveName"\"$ordner2x /MIR /R:2 /W:5
}
if($ordner3)
{
write-host "Bearbeite "$ordner3

robocopy $ordner3 $DriveName"\"$ordner3x /MIR /R:2 /W:5
}
if($ordner4)
{

write-host "Bearbeite "$ordner4
robocopy $ordner4 $DriveName"\"$ordner4x /MIR /R:2 /W:5
}

if($ordner5)
{

write-host "Bearbeite "$ordner5
robocopy $ordner5 $DriveName"\"$ordner5x /MIR /R:2 /W:5
}

#robocopy $path $DriveName /MIR
write-host
write-host "Spiegelung nach ILIAS beendet." -f green
write-host
#PHP-Script starten
if ($phppath)
{
write-host "Starte PHP-Script "$phppath

write-host

$ie = New-Object -ComObject InternetExplorer.Application
$ie.navigate($phppath)
}
write-host
read-host "Drücken Sie die Eingabetaste, um das Programm zu beenden."

if ($output -like "*Beendet*")
{
net use $DriveName /d /y
write-host "Spiegelung nach ILIAS erfolgreich." -foregroundcolor "green"
read-host "Drücken Sie die Eingabetaste, um das Programm zu beenden."
exit
}
if ($output -like "*FEHLER 2*")
{
net use $DriveName /d /y
write-host "Es ist ein Fehler beim Spiegeln auf ILIAS aufgetreten." -foregroundcolor "red"
write-host
read-host "Drücken Sie die Eingabetaste, um das Programm zu beenden."

exit
}


}
else
{

write-host "Ein Fehler bei der Verbindung zu ILIAS ist aufgetreten." -f red
write-host "Überprüfen Sie die Logindaten (Benutzername/Passwort)." -f red
write-host
read-host "Drücken Sie die Eingabetaste, um das Programm zu beenden"
exit
}


$stop = 1


}
until ($stop -eq 1)
Nun passen Sie die oberen Zeilen an. Sie benötigen einen Pfad, in dem die Ordner liegen, z.B.

T:\Stundenplan\Stunden_Vertretungsplaene_Aktuell

Dort erstellen Sie die Ordner, die die einzelnen Pläne enthalten:

Klassen
Lehrkraefte
Raueme


Geben Sie einen ILIAS-User für das WebDAV-Verzeichnis ein und ggf. ein Pfad für die oben erstelle PHP-Datei.

Kopieren Sie nun in diese Ordner Ihre Untis-Pläne hinein.
Sie dürfen den Pfad und die Unterordner nun nicht mehr verändern, ohne auch in dem Skirpt die Änderung durchzuführen!
Kompilieren Sie nun das Skript wie oben beschrieben mit PowerGUI zu einer EXE-Datei (Anleitung). Testen Sie die neue Datei mit einem Doppelklick. Wenn das Skript als Cronjob automatisch ausgeführt werden soll, sollten Sie folgenden read-host-Zeilen mit einer Raute # auskommentieren, damit es sich automatisch schließt:
  • 344
  • 352
  • 365
Für die Einrichtung des Cronjobs gehen Sie in Windows zu
Zubehör->Systemprogramme->Aufgabenplanung

Die Pläne in die ILIAS-HTML-Lernmodule kopieren

Erste Schritte in ILIAS:
 
  • Legen Sie in ILIAS einen Ordner (oder eine Kategorie) an, der alle Pläne aufnimmt, z.B. mit dem Namen "Untisquelle"
  • In diesen Ordner legen Sie für jeden Plan einen Ordner an, z.B. Klassen, Lehrkraefte, Raeume (exakt die gleichen Ordnernamen wie oben im Powershell-Skript)
  • Kopieren Sie sich für jeden diesen Ordner den Webdav-Link (über Aktionen-Button) und legen ihn irgendwo ab (Textdatei), weil wir ihn gleich benötigen
  • Legen Sie für jeden Plan ein HTML-Lernmodul an und kopieren sich auch diese Links z.B. in ein Textdokument. Die Pläne werden dann in dieses Lernmodul kopiert und können dort von den Usern entsprechend betrachtet werden. Siehe Beispiel Schulclient -> Registerkarte Organisation. Zum Kopieren benutzen wir eines der beiden unten aufgeführten Skripte (Methode 1 und 2).
Hinweis: Vielen Dank an Marc Hannappel für Methode 1! :-)

Methode 1 mit davfs2 und rsync

Diese Methode setzt davfs2 voraus, was man erst installieren muss, z.B.

apt-get install davfs2 recode
mkdir /media/untis
Achtung! Wenn man bei rsync die Option --delete setzt, kann dies bei falschem Gebrauch (falsche Pfadangabe) schnell das System zerstören. Sie sollten einige Versuche ohne diesen Parameter durchführen.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/usr/bin/env bash
# Author: Marc Hannappel, erweitert von Wolfgang Huebsch

# Variablen setzen fuer davfs
DAV_URL=https://kivinet.de/ilias/webdav.php
MOUNT_POINT=/media/untis/
REF_ID=ref_171
CLIENT_ID=iliasschoolmaster
ILIAS_USER=untis
ILIAS_USER_PWD=geheim
ZERTIFICAT_EXIST=j

echo "Mount Webdav $REF_ID unter $MOUNT_POINT als Benutzer $ILIAS_USER"
echo -e "$ILIAS_USER\n$ILIAS_USER_PWD\n$ZERTIFICAT_EXIST" | sudo mount -t davfs $DAV_URL/$CLIENT_ID/$REF_ID $MOUNT_POINT

# Author: Wolfgang Huebsch
WWW_PATH=/var/www/vhosts/kivinet.de/httpdocs

#1 - Lehrkräfte
#2 - Klassenpläne
#3 - Raumpläne
#4 - Vertretungspläne
#5 - BG-Teams
#6 - FG-Teams

#Verzeichnisnamen im Mointpoint
DIR1="Lehrkraefte"
DIR2=Klassen
DIR3=Raeume
DIR4=Vertretungsplaene
DIR5=FG-BG-Upload/Bildungsgangsgruppen
DIR6=FG-BG-Upload/Fachgruppen

#Pfade zu den ILIAS-HTML-Lernmodulen
LOC1=${WWW_PATH}/ilias/data/$CLIENT_ID/lm_data/lm_495
LOC2=${WWW_PATH}/ilias/data/$CLIENT_ID/lm_data/lm_496
LOC3=${WWW_PATH}/ilias/data/$CLIENT_ID/lm_data/lm_497
LOC4=${WWW_PATH}/ilias/data/$CLIENT_ID/lm_data/lm_498
LOC5=${WWW_PATH}/ilias/data/$CLIENT_ID/lm_data/lm_29370/bg
LOC6=${WWW_PATH}/ilias/data/$CLIENT_ID/lm_data/lm_29371/fg

#rsync -avz $MOUNT_POINT$DIR1 $LOC1
rsync --delete -avz $MOUNT_POINT$DIR1/ $LOC1
rsync --delete -avz $MOUNT_POINT$DIR2/ $LOC2
rsync --delete -avz $MOUNT_POINT$DIR3/ $LOC3
rsync --delete -avz $MOUNT_POINT$DIR4/ $LOC4
rsync --delete -avz $MOUNT_POINT$DIR5/ $LOC5
rsync --delete -avz $MOUNT_POINT$DIR6/ $LOC6

Methode 2 mit webdac_sync.jar. Empfohlen, wenn Methode 1 nicht funktioniert.

Kopieren Sie von der Seite http://www.re.be/downloads.xhtml das Tool webdav_sync.jar nach /var/scripts und benennen es um:

mv webdav_sync.jar webdavsync.jar

Erstellen Sie nun das unten stehende Script, z.B. in /var/scripts

nano untisupload.sh

und passen die Variablen an. Ich hoffe, es ist selbsterklärend. Ansonsten fragen Sie bitte nach unter wolfgang.huebsch@gmx.de.
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#!/bin/bash
#pfad zu webdavsync - Info: http://www.re.be/downloads.xhtml
sync="/opt/ilias/scripts/webdavsync.jar"
#Webserver-User
wwwu="www-data"
wwwg="www-data"
#ILIAS-Datei-Pfad
varwww=/var/www/vhosts/kivinet.de

#ILIAS-User
user=untis1
pw=1234
#Achtung: verwenden Sie statt Ihrer Domain hier localhost mit dem Protokoll http (nicht https) nach Moeglichkeit.
domain=@localhost/ilias/webdav.php/iliasschoolmaster/
prot=http://

#1 - Lehrkräfte
#2 - Klassenpläne
#3 - Raumpläne
#4 - Vertretungspläne

#Pläne-Lokalpfad auf diesem Server bzw. Links zu den ILIAS-HTML-Lernmodulen:
loc1=${varwww}/ilias/data/iliasschoolmaster/lm_data/lm_495
loc2=${varwww}/ilias/data/iliasschoolmaster/lm_data/lm_496
loc3=${varwww}/ilias/data/iliasschoolmaster/lm_data/lm_497
loc4=${varwww}/ilias/data/iliasschoolmaster/lm_data/lm_498
#Webdav-Pfad in ILIAS - nur die ref-ID nach diesem Muster eintragen (findet man in in der Browser-Adressleiste)
ref1=ref_6283/
ref2=ref_175/
ref3=ref_6516/
ref4=ref_6731/


#Ab hier sind keine Aenderungen erforderlich#

if [ -z "$loc1" ]
then
echo "loc1 ist leer"
else
rm $loc1/*.htm
java -jar $sync -u $prot$user:$pw$domain$ref1 -d $loc1'/' -down
fi

if [ -z "$loc2" ]
then
echo "loc2 ist leer"
else
rm $loc2/*.htm
java -jar $sync -u $prot$user:$pw$domain$ref2 -d $loc2'/' -down
fi

if [ -z "$loc3" ]
then
echo "loc3 ist leer"
else
rm $loc3/*.htm
java -jar $sync -u $prot$user:$pw$domain$ref3 -d $loc3'/' -down
fi

if [ -z "$loc4" ]
then
echo "loc4 ist leer"
else
rm $loc4/*.htm
java -jar $sync -u $prot$user:$pw$domain$ref4 -d $loc4'/' -down
fi




#Charset fixen - mit dem neuen Untis 2016 obsolet. Falls gewollt, noch apt-ge install recode installieren und recode-Pfad angeben
#recode = /pfad/zu/recode
#if [ -z "$loc1" ]
#then
#echo "loc1 ist leer"
#else
#cd $loc1
#find . -name "*.htm" -exec $recode utf-8 {} \;
#fi

#Owner neu setzten
if [ -z "$loc1" ]
then
echo "loc1 ist leer"
else
chown -R $wwwu:$wwwg $loc1
fi

if [ -z "$loc2" ]
then
echo "loc2 ist leer"
else
chown -R $wwwu:$wwwg $loc2
fi

if [ -z "$loc3" ]
then
echo "loc3 ist leer"
else
chown -R $wwwu:$wwwg $loc3
fi

if [ -z "$loc4" ]
then
echo "loc4 ist leer"
else
chown -R $wwwu:$wwwg $loc4
fi


#Mail senden
mail -a "Content-Type: text/plain; charset=UTF-8" -s "WebDav-Untis-Script lief durch" wolfgang.huebsch@gmx.de <<< "Die Pläne in ILIAS sollten nun mit denen auf dem T-Laufwerk synchronisiert sein"
Bitte verwenden Sie zunächst als Protokoll http (nicht https !!!) und nach Möglichkeit als Domain localhost. Wenn Sie nicht localhost sondern den echten Domainnamen verwenden müssen, testen Sie diesen erst mit http und wenn es dann läuft, testen Sie auch https. Wenn https gut funktioniert, belassen Sie es dabei. Anonsten ggf. zurück ändern zu http.
Jetzt müssen Sie das Script bei Bedarf starten. Dies kann z.B. durch einen Eintrag in die Crontab-Datei erfolgen (startet das Skript alle 45 Minuten):

nano /etc/crontab

Startet das Skript alle 45 Minuten:
*/45 * * * *     root    /var/scripts/untisupload.sh > /dev/null 2>&1
Sie können das Skript alternativ auch aus dem Internet starten, in dem Sie eine Datei scriptstart.php im Webverzeichnis erstellen und diesen Inhalt einfügen:
<?php

exec('/var/scripts/untisupload.sh 2>&1', $output);
print_r($output);  // to see the respond to your command
?>

Der Aufruf dieser Datei führt dann dazu, dass die Pläne in die HTML-Lernmodule kopiert werden. Sie können diesen Pfad auch in das Powershell-Skript oben eintragen (Zeile 29), dann startet das Powershell-Skript das Bash-Skript - funktioniert gut!
Tipp: Erstellen Sie für die Vertretungspläne einen separaten Prozess mit einem kürzeren Upload-Intervall.

Last edited: 03. Sep 2021, 08:59, [wolfganghuebsch]


No comment has been posted yet.