Sie sind nicht angemeldet.

DeepWare

Anfänger

  • »DeepWare« ist der Autor dieses Themas

Beiträge: 17

Rootserver vorhanden: Nein

  • Nachricht senden

1

Sonntag, 23. Februar 2014, 16:50

fastdl automation mit bash script

hi,
wenn ich hier falsch sein sollte bitte verschieben hab nix passendes gefunden.
ein freund von mir hat einen rootserver, auf welchem bis dato immer das "ese" lief, seid einstellung versuchte er "easy wi" erfolglos zu installieren und benutzt nun tecbase7.
seine lizens läuft nun ein halbes jahr desshalb möchte er es nicht nochmal umstellen.

ich habe erfolglos tage damit verbracht nach einem fastdl zu suchen welches wie das "ese" funktioniert bis ich zum entschluss kam da muss ich wohl bash scripten (noch nie gemacht aber is ja nich komplizierter als andere scriptsprachen "autoit z.b.").

dieses script ist dabei entstanden:

Spoiler Spoiler

Quellcode

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
#!/bin/
dir1="/home/*/server/css_*/css/cstrike/maps"
dir2="/home/*/server/css_*/css/cstrike/sound"
dir3="/home/*/server/css_*/css/cstrike/materials"
dir4="/home/*/server/css_*/css/cstrike/models"
fdldir1="/var/www/fastdl/cstrike/maps/test/maps"
fdldir2="/var/www/fastdl/cstrike/maps/test/sound"
fdldir3="/var/www/fastdl/cstrike/maps/test/materials"
fdldir4="/var/www/fastdl/cstrike/maps/test/models"
suche1() {
 a1="ls $dir1"
while test 1
do
 b1="ls $dir1"
if test "$a1" != "$b1"
then
 
 find $dir1 -name "*.bsp" -exec bzip2 -9k  '{}' \;
 find $dir1 -name "*.nav" -exec bzip2 -9k  '{}' \;
 find $dir1 -name "*.res" -exec bzip2 -9k  '{}' \;
 clear
 echo"*************************"
 echo"* Dateien sind Gezippt! *"
 echo"*************************"
 rsync -auv --include=*/ --include=*.bz2 --exclude=*.nav --exclude=*.bsp --exclude=*.txt --exclude=*.ztmp --exclude=*.res --delete ${dir1}/ $fdldir1
 clear
 echo"***********************"
 echo"* Maps Syncronisiert! *"
 echo"***********************"
else
 a1=$b1
fi
 suche2
 clear
 echo"***********************************"
 echo"* Nichts neues gefunden bei Maps! *"
 echo"***********************************"
#fi
sleep 5
done
}
suche2() {
 a2="ls $dir2"
while test 2
do
 b2="ls $dir2"
if test "$a2" != "$b2"
then
 find $dir2 -iname "*.mp3" -exec bzip2 -9k  '{}' \;
 find $dir2 -iname "*.wav" -exec bzip2 -9k  '{}' \;
 clear
 echo"*************************"
 echo"* Dateien sind Gezippt! *"
 echo"*************************"
 rsync -auv --include=*/ --include=*.bz2 --exclude=*.mp3 --exclude=*.wav --exclude=*.txt --exclude=*.ztmp --delete ${dir2}/ $fdldir2
 clear
 echo"*************************"
 echo"* Sounds Syncronisiert! *"
 echo"*************************"
else
 a2=$b2
fi
 suche3
 clear
 echo"***********************************"
 echo"* Nichts neues gefunden bei ! *"
 echo"***********************************"
#fi
sleep 5
done
}
suche3() {
 a3="ls $dir3"
while test 3
do
 b3="ls $dir3"
if test "$a3" != "$b3"
then
 rsync -auv --delete ${dir3}/ $fdldir3
 clear
 echo"****************************"
 echo"* Materials Syncronisiert! *"
 echo"****************************"
else
 a3=$b3
 suche4
fi
sleep 5
done
}
suche4() {
 a4="ls $dir4"
while test 4
do
 b4="ls $dir4"
if test "$a4" != "$b4"
then
 rsync -auv --delete ${dir4}/ $fdldir4
 clear
 echo"*************************"
 echo"* Models Syncronisiert! *"
 echo"*************************"
else
 a4=$b4
 suche1
fi
sleep 5
done
}
 suche1


mit bauchschmerzen musste ich feststellen, das es zwar läuft und das macht was es soll nur leider packt es die dateien schon wärend des uploads,
also musste ich die daten prüfen lassen ob sie noch in bearbeitung sind.

dabei kam jetzt dieses veränderte script raus wo ich nur die 1. funktion poste:

Spoiler Spoiler

Quellcode

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
#!/bin/
dir1="/home/*/server/css_*/css/cstrike/maps"
dir2="/home/*/server/css_*/css/cstrike/sound"
dir3="/home/*/server/css_*/css/cstrike/materials"
dir4="/home/*/server/css_*/css/cstrike/models"
fdldir1="/var/www/fastdl/cstrike/maps/test/maps"
fdldir2="/var/www/fastdl/cstrike/maps/test/sound"
fdldir3="/var/www/fastdl/cstrike/maps/test/materials"
fdldir4="/var/www/fastdl/cstrike/maps/test/models"

suche1() {
 a1="ls $dir1"
while test 1
do
 b1="ls $dir1"
if test "$a1" != "$b1"
then
 c1="find $dir1 -amin 1"
 clear
 echo"**********************************"
 echo"* ${c1} wird gerade hochgeladen! *"
 echo"**********************************"
 sleep 5
 
 datei="$(ls -l "$c1" | awk '{print $5}')"
if test ["$datei" -eq "$datei2"]
then 
 
 find "$dir1" -name "*.bsp" -exec bzip2 -9k  '{}' \;
 find "$dir1" -name "*.nav" -exec bzip2 -9k  '{}' \;
 find "$dir1" -name "*.res" -exec bzip2 -9k  '{}' \;
 clear
 echo"*************************"
 echo"* Dateien sind Gezippt! *"
 echo"*************************"
 rsync -auv --include=*/ --include=*.bz2 --exclude=*.nav --exclude=*.bsp --exclude=*.txt --exclude=*.ztmp --exclude=*.res --delete "${dir1}/" "$fdldir1"
 clear
 echo"***********************"
 echo"* Maps Syncronisiert! *"
 echo"***********************"
 
 c1=""
fi
else
 a1=$b1
fi
 suche2
 clear
 echo"***********************************"
 echo"* Nichts neues gefunden bei Maps! *"
 echo"***********************************"
#fi
sleep 5
done
}


die ganzen echos werden noch entfernt wenn es richtig läuft.

kann ich dies denn so nutzen und es im hintergrund permanent laufen lassen ?
es sollen mehrere server auf neue daten überwacht werden und die fastdl daten in ein gemeinsames fastdlverzeichniss wandern.

mfg henry

DeaD_EyE

Administrator

Beiträge: 3 980

Wohnort: Hagen

Beruf: Mechatroniker (didaktische Systeme)

Rootserver vorhanden: Nein

  • Nachricht senden

2

Montag, 24. Februar 2014, 20:58

Hast mir ja bereits in der PN den gleichen Inhalt geschrieben. Ich komme zur Zeit zu gar nichts.
Mein Gedanke war etwas mit Python zu entwickeln, was sich an das Konzept von control.sh des Easy-Wi orientiert. Dort wird von jeder Datei eine md5sum erstellt und komprimiert im Cache abgelegt. Ausführlicher will ich gar nicht werden.

DeepWare

Anfänger

  • »DeepWare« ist der Autor dieses Themas

Beiträge: 17

Rootserver vorhanden: Nein

  • Nachricht senden

3

Donnerstag, 6. März 2014, 01:38

ich habe nun tagelang weiter getestet und gegrübelt evtl. bin ich betriebsblind geworden die einzige funktion die problemlos läuft ist "packer"
kann mir jmd nen anstoß geben was ich übersehen hab oder wo der fehler in der funktion "suche" liegt ?
bislang reagiert diese funktion auf keinerlei verzeichnissänderungen wie sie beim upload entstehen und hängt somit in einer endloßschleife fest.

kompletter code:

Spoiler Spoiler

PHP-Quelltext

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
#!/bin/bash

echo "
#############################################################
# FastdownloadScript zum automatischen Dateiabgleich und    #
# Syncronisation auf Rootservern.                           #
# Zur verwendung auf Counter Strike Source servern mit      #
# Tecbase Webinterface.                                     #
#                                                           #
# Es läuft selbstständig im hintergrund und gleicht die     #
# Verzeichnisse für den Fastdl ab packt die Dateien und     #
# spiegelt sie in das Verzeichniss für den Fastdl link      #
# auf den selben Root.                                      #
# Es werden dabei mehrere Game Server in ein gemeinsames    #
# Fastdl Verzeichniss gespiegelt.                           #
# Gelöschte Maps Sounds oder dergleichen werden entfernt.   #
#                                                           #
# Bitte Pfade an eigenen Root anpassen !                    #
#                                                           #
# z.b.:                                                     #
#       dir1="/weis/der/geier/wo/deine/server/sind"         #
#       fdldir="/dein/fastdl/verzeichniss"                  #
#                                                           #
# Script zur freien verwendung, darf auch modifiziert,      #
# oder verbessert werden.                                   #
#                                                           #
# Script Release 0.0.1 by DeepWare                          #
#############################################################
"
echo ""
echo " !!! Script startet in wenigen Sekunden !!! "
sleep 15
################################
# Release Version 0.0.1        #
################################
# Testpfade und variablen !!!! #
################################

fdldir="/var/www/fastdl/cstrike/maps/test"

dir1="/home/*/server/css_*/css/cstrike"
#fdldir="/home/test"
include="--include=*/ --include=*.bz2 --include=*.jpg --include=*.png"
exclude="--exclude=*.txt --exclude=*.ztmp --exclude=*.wav --exclude=*.mp3 --exclude=*.nav --exclude=*.bsp --exclude=*.res"
datei_finder="find $dir1 -type f -amin -5 -ls"
optionen=(
    --include='*/'
    --include='*.bz2'
    --include='*.jpg'
    --include='*.png'
    --exclude='*.txt'
    --exclude='*.ztmp'
    --exclude='*.wav'
    --exclude='*.mp3'
    --exclude='*.nav'
    --exclude='*.bsp'
    --exclude='*.res'
)


clear

function suche() {

# sollte ok sein geht aber nicht

    a="ls -laR ${dir1}/maps"
    a1="ls -laR ${dir1}/sound"
    a2="ls -laR ${dir1}/models"
    a3="ls -laR ${dir1}/materials"

while test 1
do

    clear
    echo ""
    echo " !!! Dateien werden geprüft !!! "
    echo ""
    sleep 1

    b="ls -laR ${dir1}/maps"
    b1="ls -laR ${dir1}/sound"
    b2="ls -laR ${dir1}/models"
    b3="ls -laR ${dir1}/materials"

#if [ find /home/*/server/css_*/css/cstrike/maps -type f -amin -1 -eq 0 ]

if [ $a != $b -o $a1 != $b1 -o $a2 != $b2 -o $a3 != $b3 ]
then

    dateitest

else

    a=$b
    a1=$b1
    a2=$b2
    a3=$b3

    clear
    echo ""
    echo " !!! Dateien sind aktuell !!! "
    echo ""
    sleep 1

fi

done
}

function dateitest() {

# testen

    aa="ls -laR ${dir1}/maps"

    clear
    echo ""
    echo " !!!     Prüfe erneut     !!! "
    echo ""
    sleep 1

    bb="ls -laR ${dir1}/maps"

if [ $aa $bb ]
then

    echo ""
    echo " !!! Datei wurde gelöscht !!! "
    echo " !!!    Starte Abgleich   !!! "
    echo ""
    sleep 3
    clear

    packer

else

    clear
    echo ""
    echo " !!! Datei im Upload !!! "
    echo ""
    sleep 1

    c="find ${dir1}/maps -type f -amin -1"

if [ -e $c ]
then

    clear
    echo ""
    echo " !!! $c wird gerade hochgeladen !!! "
    echo ""
    sleep 2

    d="$(ls -l $c | awk '{print $5}')"

if [ $d -eq $d2 ]
then

    a=""
    b=""
    aa=""
    bb=""
    c=""
    d=""
    d2=""

    clear
    echo ""
    echo " !!! fertig hochgeladen !!! "
    echo ""
    sleep 2

    packer

fi
fi
fi

    sleep 2
}

function packer() {

# funktion ist ok

while true
do

    clear
    echo ""
    echo " !!! Dateien werden gepackt !!!"
    echo ""
    sleep 1

    find $dir1 \( -name "*.bsp" --name "*.nav" --name "*.res" --name "*.mp3" --name "*.wav" \) -exec bzip2 -9k '{}' \;

    echo ""
    echo " !!! Dateien sind gepackt !!! "
    echo ""
    sleep 1

    clear
    echo ""
    echo " !!! Dateien werden Syncronisiert !!! "
    echo ""
    sleep 1

    rsync -auv --delete ${dir1}/materials ${fdldir}
    rsync -auv --delete ${dir1}/models ${fdldir}
    rsync -auv "${optionen[@]}--delete ${dir1}/maps ${fdldir}
    rsync -auv "${optionen[@]}--delete ${dir1}/sound ${fdldir}

    echo ""
    echo " !!! Dateien Syncronisiert !!! "
    echo ""
    sleep 1
    clear

    suche

done
}

packer


ich hoffe da kann einer helfen weil ich leider keinen eigenen root hab und immer nur meinen freund fragen kann ob er funktioniert
falls noch fragen zu den einzelnen zeilen sind kann ich die gern dokumentieren.

mfg henry

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »DeepWare« (6. März 2014, 01:45)


DeepWare

Anfänger

  • »DeepWare« ist der Autor dieses Themas

Beiträge: 17

Rootserver vorhanden: Nein

  • Nachricht senden

4

Montag, 10. März 2014, 14:06

so, ihr lieben ich hab nun dasobere konzept komplett verändert und arbeite nun mit textdateien soweit funktioniert dieser script anstandslos.
ihr könnt euch frei fühlen und änderungen vornehmen wie ihr wollt nur bitte postet sie und behaltet sie nicht für euch.
dieses script:
- durchforstet eure serverpfade egal wie viele vorhanden sind
- packt alle dateien welche gepackt werden dürfen auf den jeweiligen serverpfaden
- syncronisiert diese daten mit dem alleinigen fastdl verzeichniss
- reagiert auf datei -upload und gelöschte dateien im richtigen format
- bilddateien im format .jpg und .png werden für die motd im maps verzeichniss mitsyncronisiert
- es werden 5 .txt dateien erstellt wobei 2 nur temorär beim download genutzt werden diese
liegen im /home verzeichniss eures servers : fdlfiles_1.txt , fdlfiles_2.txt , fdlfiles_aenderung.txt
und die 2 temorären file_md5.txt , file2_md5.txt

hier der script denkt dran die pfade anzupassen es läuft auf tecbase7 webinterface :

Spoiler Spoiler

Quellcode

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
#!/bin/bash

#############################################################
# FastdownloadScript zum automatischen Dateiabgleich und    #
# Syncronisation auf Rootservern.                           #
# Zur verwendung auf Counter Strike Source servern mit      #
# Tecbase Webinterface.                                     #
#                                                           #
# Es läuft selbstständig im hintergrund und gleicht die     #
# Verzeichnisse für den Fastdl ab packt die Dateien und     #
# spiegelt sie in das Verzeichniss für den Fastdl link      #
# auf den selben Root.                                      #
# Es werden dabei mehrere Game Server in ein gemeinsames    #
# Fastdl Verzeichniss gespiegelt.                           #
# Gelöschte Maps Sounds oder dergleichen werden entfernt.   #
#                                                           #
# Bitte Pfade an eigenen Root anpassen !                    #
# z.b. : dir="/weis/der/geier/wo/deine/server/sind"         #
#        fdldir="/dein/fastdl/verzeichniss"                 #
#                                                           #
# zur freien verwendung kann auch modifiziert oder          #
# verbessert werden.                                        #
# Script by DeepWare                                        #
#############################################################
# v.0.0.2
##################################
## Testpfade und variablen !!!! ##
##################################

dir1="/home/*/server/css_*/css/cstrike"
fdldir="/var/www/fastdl/cstrike/maps/test"
include="--include=*/ --include=*.bz2 --include=*.jpg --include=*.png"
exclude="--exclude=*.txt --exclude=*.ztmp --exclude=*.wav --exclude=*.mp3 --exclude=*.nav --exclude=*.bsp --exclude=*.res"
datei_finder="find $dir1 -type f -amin -5 -ls"
optionen=(
    --include='*/'
    --include='*.bz2'
    --include='*.jpg'
    --include='*.bmp'
    --exclude='*.txt'
    --exclude='*.ztmp'
    --exclude='*.wav'
    --exclude='*.mp3'
    --exclude='*.nav'
    --exclude='*.bsp'
    --exclude='*.res'
)
dateien=( 
    -name "*.bsp" -o
    -name "*.bz2" -o
    -name "*.nav" -o
    -name "*.wav" -o
    -name "*.mp3" -o
    -name "*.jpg" -o
    -name "*.png"
)

####################
###### funktionen ##
####################

function suche() {


while true
do

find ${dir1}/maps "${dateien[@]}" > /home/fdlfiles_1.txt
find $dir1/sound "${dateien[@]}" >> /home/fdlfiles_1.txt
find $dir1/materials -iname "*.*" >> /home/fdlfiles_1.txt
find $dir1/models -iname "*.*" >> /home/fdlfiles_1.txt
sleep 1

clear
echo " !!! Dateien werden geprüft !!! "
sleep 1

diff /home/fdlfiles_1.txt /home/fdlfiles_2.txt > /home/fdlfiles_aenderung.txt

if [ $? = "1" ]
then

dateitest

else

clear
echo " !!! Dateien sind aktuell !!! "
sleep 1

mv /home/fdlfiles_1.txt /home/fdlfiles_2.txt

fi
done
}

function dateitest() {

clear
echo " !!! Dateien werden bearbeitet !!! "
sleep 1

grep ">" /home/fdlfiles_aenderung.txt

if [ $? = "0" ]
then

echo " gelöscht "
sleep 3

packer

else

find ${dir1}/maps -type f -amin -1 -exec md5sum '{}' \; > /home/file_md5.txt
find ${dir1}/materials -type f -amin -1 -exec md5sum '{}' \; >> /home/file_md5.txt
find ${dir1}/models -type f -amin -1 -exec md5sum '{}' \; >> /home/file_md5.txt
find ${dir1}/sound -type f -amin -1 -exec md5sum '{}' \; >> /home/file_md5.txt

while true
do

sleep 2

find ${dir1}/maps -type f -amin -1 -exec md5sum '{}' \; > /home/file2_md5.txt
find ${dir1}/materials -type f -amin -1 -exec md5sum '{}' \; >> /home/file2_md5.txt
find ${dir1}/models -type f -amin -1 -exec md5sum '{}' \; >> /home/file2_md5.txt
find ${dir1}/sound -type f -amin -1 -exec md5sum '{}' \; >> /home/file2_md5.txt

diff /home/file_md5.txt /home/file2_md5.txt

if [ $? = "0" ]
then

clear
echo " !!! fertig hochgeladen !!! "
sleep 2

packer

else

mv /home/file2_md5.txt /home/file_md5.txt

fi
done
fi

sleep 2
}

function packer() {

while true
do

echo " !!! Dateien werden gepackt !!!"
sleep 1

find ${dir1}/maps \( -name "*.bsp" -o -name "*.nav" -o -name "*.res" -o -name "*.mp3" -o -name "*.wav" \) -exec bzip2 -9k '{}' \;
find ${dir1}/sound \( -name "*.bsp" -o -name "*.nav" -o -name "*.res" -o -name "*.mp3" -o -name "*.wav" \) -exec bzip2 -9k '{}' \;

echo " !!! Dateien gepackt !!! "
sleep 1

clear
echo " !!! Dateien werden Syncronisiert !!! "
sleep 1

rsync -auv --delete ${dir1}/materials ${fdldir}
rsync -auv --delete ${dir1}/models ${fdldir}
rsync -auv "${optionen[@]}" --delete ${dir1}/maps ${fdldir}
rsync -auv "${optionen[@]}" --delete ${dir1}/sound ${fdldir}

echo " !!! Dateien Syncronisiert !!! "
sleep 1
clear

mv /home/fdlfiles_2.txt /home/fdlfiles_1.txt
rm -f /home/file_md5.txt
rm -f /home/file2_md5.txt

echo " !!! Erstelle Dateiliste !!! "
sleep 1

suche

done
}

packer


viel spaß damit
mfg henry