problemlösungen aus der computer- , netzwerktechnik- , linux welt, bash-scripting, drupal, etc. pp.

26 posts / 0 new
Letzter Beitrag
ad-min
problemlösungen aus der computer- , netzwerktechnik- , linux welt, bash-scripting, drupal, etc. pp.
Deutsch

hallo allerseits,

hier könnt ihr nach der registrierung eure meinungen über unsere kurse und unterrichtablauf austaschen, eure anregungen und wünsche herausbringen, neuigkeiten aus der computer- , netzwerktechnik- , webdesign-, drupal-, linuxwelt und bash-scripting veröffentlichen und eure technische probleme bzw. lösungen publizieren.

alle üblichen blog-, foren- und  internet-etiquette regeln sind zu beachten: möglichst kurze und sachliche kommentare ... etc.pp.
(siehe link "Impressum")


ps. das forum ist momentan in deutsch und russisch herausgebracht, aber natürlich, können sie hier auch auf englisch posten.

---------------
The forum is currently published in German and Russian. Of course, you can write messages here also in English.

---------------
Форум публикуется (пока) на немецком и русском языках, что, конечно, не исключает возможности публиковать вам посты и на английском.

---------------

make script, not war!

---------------

s-3
drupal problem ...

nach dem update von drupal 6 auf 7 bekomme ich die Fehlermeldung:
Error at offset 11 of 37 bytes in variable_initialize() (line 936 of /var/www/?/data/www/?/includes/bootstrap.inc).
Hat jemand ein Tipp für die Lösung des Problems?

s-3
Drupal Problem ...

ich habe das modul "Variable Check" eingespielt - leider hat das nicht geholfen ...

:-(

il
Drupal Problem ...

Probier mal solche Methode:

Unter myphp -> mysql -> SQL ​DELETE Statement ausführen:

​DELETE FROM variable WHERE name = 'NAME'

in deinem Fall NAME gleich 'unserialize' (nehme ich an)

ad-min
das modul "Variable Check"

normalerweise löst drupal (fast alle) probleme beim einspielen des neuen moduls

aber wer in der db mysql sich auskennt und das richtige statement abgibt der kommt schneller zurecht.

il
ubuntu cronjob funktioniert nicht ...

ubuntu: als normale user (kein root) funktioniert mein cronjob nicht und zwar:

crontab -e:
00 10 * * * ifconfig>/tmp/ifconfig_info

ad-min
Ubuntu Cronjob Funktioniert Nicht ...

in dem fall ist es  ratsam absoluter  pfad zu nutzen: anstatt  ifconfig   -  /sbin/ifconfig

der cronjob wird dann so definiert:

00 10 * * * /sbin/ifconfig > /tmp/ifconfig_info

------------------

noch bessere lösung wäre es ein bash-skript  schreiben (z.B "schreib_mein_ifconfig"), das skript ausführbar machen (chmod 755 schreib_mein_ifconfig) und erst dann als cronjob definieren

----------------------------------

cat schreib_mein_ifconfig

​#!/bin/bash

/sbin/ifconfig > /tmp/ifconfig_info

----------------------------------

PS. WICHTIG:

​das skript muss auch mit dem absoluten pfad in der crontab eingetragen werden:

​crontab -e:

00 10 * * *  ​​/home/user/schreib_mein_ifconfig

il
danke, hat's geklappt!

danke, hat's geklappt!

s-3
drupal: artikel-problem ...

Die Aufgabe: ein Artikel NICHT auf der Startseite publizieren.

Bis jetzt habe ich keine Lösung gefunden! 

Hilfe!

peter
hallo, man redet über 

hallo, man redet über "Taxonomie" , "Vokabular" und "Begriffe" ,,,

ich habe neue seite erstellt, dann über taxonomie neuer vokabular und  begriffe zugewiesen ...

das hat nicht funktioniert

:-(

s-3
motion server

hallo, motion-server funktioniert, aber  die bilder von der webcam werden nicht gespeichert, obwohl ich target definiert habe:

target_dir /home/motion/motion

 

ad-min
motion server

hallo,

es muss die datei /etc/motion/motion.conf editiert werden und zwar:

bei ihnen (höchstwahrscheinlich) der parameter output_normal off es ist auch default-mäßig so. setzen sie der ob. gen. parameter auf on:

output_normal on

vorsicht!  falls vor der kamera viel los ist, wird das verzeichnis (target_dir) immer grösser!

target_dir /home/motion/

sie sollen das verzeichnis entweder manuell (ab und an) leeren oder per skript über den cronjob

ad-min
motion server/ bash-scripting ...

was bash-scripting betrifft, hier ist ein kleines beispiel:

vi /usr/local/bin/script/script_mv_50
------------------------------
#!/bin/bash
#### variablen definition #########
A=`du  /home/motion/motion|awk '{print $1}'`
###### falls das verzeichnis groesser als 5000 KB (5 MB) ist, loesch die erste 50 dateien (bilder) #########
if [[ $A -gt 5000 ]]
 then
cd /home/motion/motion
mv `ls /home/motion/motion | head -50` /externe_festplatte;
else :
fi

------------------------------
das skript tut folgendes: die erste 50 dateien werden auf externe festplatte gemoved, sobald die größe des verzeichnisses grösser als 5000 KB ist.
um den vorgang zu automatisieren, kann das skript in crontab eingetragen werden. damit das skript mit 10 -minütigen rhythmus sich wiederholt, wird die folgende schreibweise benutzt:

crontab -e
*/10 * * * * /usr/local/bin/script/script_mv_50

ad-min
motion server - bash-scripting ...

es ergibt einen sinn die bilder (dateien) zu taren (einen tar-archiv zu erstellen) und dann  extern zu sichern, falls an dem  objekt viel los ist und sie das objekt nicht nur permanent beobachten möchten, sondern auch bilder speichern.
sie können, natürlich gleich das tar-archiv über das netz übertragen:

#!/bin/bash
#### variablen definition anfang #########
datum=`date +"%d"``date +%"m"``date +"%y"`
#### variablen definition ende #########
tar -czf - /home/motion/  | ssh ferner-rechner  "cat > /home/$datum-objekt_monitoring_bilder.tgz"

dank der "datum-variable" können die bild-archive später leicht nach datum einordnen.

in dem bereich bash-scripting  lässt es sich grenzenlos  experimentieren, z.b.:

  #!/bin/bash
#### variablen definition anfang #########
A=`ls  /home/motion/motion | wc -l`
#### variablen definition ende #########

### falls die anzahl der bilder ändert sich, dann tu das und das ####
if [[ $A -ne 0 ]]
 then
            echo "ALARM"

else    
            echo "alles OK"

fi

anstatt echo "ALARM"  können sie an sich selbst eine email senden (falls am linux rechner ein SSMTP-email-programm installiert ist) .... etc. pp.  ...........

ad-min
bash-scripting ... rsync

man kann auch das synchronisation programm rsync (gleichzeitig ein netzwerkprotokoll) nutzen um die dateien über das netz sicher zu übertragen.
in dem fall wird das script so aussehen:

#!/bin/bash
rsync -av --delete -e ssh /home/motion/  user@ferner-rechner:/home/monitoring

ps. damit das skript einwandfrei funktioniert, müsste die passwortabfrage zwischen zwei rechnern (bzw. usern) unterdrückt werden.
wie das gemacht wird, ist ein anderes thema.

selaw2
Zufallsgenerator unter bash

Das Skript "zufallsgenerator": Starten sie ihren Computer und hören sie gleich ihre Lieblingsmusikstücke!
---------------------------------
cat -n /usr/local/bin/zufallsgenerator

#!/bin/bash
A=`ls /home/ich/Musik/relax/ | wc -l`;
B=`echo $((1 + $RANDOM % $A))`
/usr/bin/xplayer /home/ich/Musik/relax/$B

# Die Variable B bekommt ein zufälliger Wert von 1 bis A (A - maximale Anzahl ihre Dateien (bzw. Musikstücke) im Verzeichnis "relax")
---------------------------------
PS: Wenn sie das Skript in ihre Startprogramme hinzufügen, dann startet ihre Lieblingsmusikstück von dem Verzeichnis /home/ich/Musik/relax/ und zwar in eine zufällige Reihenfolge ;) und bei dem Start des Rechners hören sie gleich die Musik :)
PPS: Die Musikstücke sollen 1, 2, 3, ... A heißen (also natürliche Zahl), weil $RANDOM akzeptiert nur natürliche Zahlen (Ganzzahl) und das wäre ein "Problem" (in Anführungszeichen), weil es ist nicht wirklich ein Problem sondern eine Aufgabe.
Die Aufgabe ist: Wie der String-Dateiname (z.B.) "relaxmusik.mp4" wandle ich in eine Ganzzahl um?
..................
Hier ist die Lösung (Here is the solution):
RANDOM under bash accepts (unfortunately) only numeric numbers
The contents of the directory "/home/iam/musik"
ls /home/se/music/
relaxmusik.mp4
rockmusic.mp4
jazz.mp4
My task was: define file names numerically as follows:
the name "relaxmusik.mp4" should be "1"
the name "rockmusic.mp4" should be "2"
etc. pp.
Here is the solution:
I create the script "solution":
cat solution
#!/bin/bash
A="mv"
B=`ls /home/iam/musik | wc -l`
ls /home/iam/musik > /tmp/name-of-files
i=1
while [ $i -le $B ]
do
echo $A $i
i=`expr $i + 1`
done
The script "solution" does the following:
the output of the script is:
mv 1
mv 2
mv 3
and the file "/tmp/name-of-files" is generated.
Its content is:
relaxmusik.mp4
rockmusic.mp4
jazz.mp4
The output of the script "solution" will be redirected to the file /tmp/mv-number: ./solution > /tmp/mv-number
also cat /tmp/mv-number is:
mv 1
mv 2
mv 3
Now I use the command "paste" and "awk":
paste /tmp/mv-number /tmp/name-of-files | awk '{print $1, $3, $2}'
And ... I get the correct output:
mv relaxmusik.mp4 1
mv rockmusic.mp4 2
mv jazz.mp4 3
and the content of my directory "/home/iam/musik" is now:
ls /home/iam/musik
1
2
3
finished! -> now i can start random music playback under bash!
PS. I would be happy for your better suggestions :)

selaw2
ein skript "nachts_jeder_stunde"

#!/bin/bash
A=`ls /var/lib/motion/| wc -l`;
D=`date +"%d"``date +%"m"``date +"%y"`
E=`date | awk '{print $4}' | sed s/\:/-/g`
I=$D-$E
echo $I
cd /tmp/MOTION-ALARM/;
mkdir $D-$E
sleep 10
B=`ls /var/lib/motion/| wc -l`;

C=$[B-A]
echo $C

if [ $C -ne 0 ];

then

date > /tmp/MOTION-ALARM/$D-$E/datum-alarm
echo "ALARM"
echo "Info über motin-server" | sudo mail -s "Jemand ist in der Wohnung" xxxxx@gmail.com
else

echo "alles ruhig"

fi

############# Erklärung #############
Ich lasse das Skript über die Nacht jeder Stunde laufen von 01:10 bis 05:10 Uhr.
Ganz klar: Differenz zwischen zwei Variablen B und A sollte gleich 0 sein. Also Variable C=$[B-A]
gleich 0 - es gibt keine Bewegungen in der Wohnung - in der Wohnung ist dunkel!
Wenn das nicht der Fall sein sollte, dann (eindeutig): Jemand ist in der Wohnung! (Licht an, etc. pp.)
:(

selaw2
Das Skript speedtest (bzw. speedtest-cli)

Das (war) ist ein Python-Skript mit 1508 Zeilen von Matt Martz. Das Skript hat auf einmal nicht mehr funktioniert:
./speedtest
Retrieving speedtest.net configuration...
Traceback (most recent call last):
File "./speedtest", line 1508, in
main()
File "./speedtest", line 1498, in main
shell()
File "./speedtest", line 1401, in shell
speedtest = Speedtest()
File "./speedtest", line 743, in __init__
self.get_config()
File "./speedtest", line 799, in get_config
map(int, server_config['ignoreids'].split(','))
#################
Und es ist sehr bedauerlich gewesen. Vor kurzem habe ich mein Linux Mint upgedated und dann "speedtest-cli" installiert:
# sudo apt install speedtest-cli
erneutinstalliert. Jetzt funktioniert es wieder :)
# sudo /usr/bin/speedtest-cli
Retrieving speedtest.net configuration...
Testing from Dein Provider (XXX.XXX.XXX.XXX)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by 31173 Services AB (Frankfurt) [23.59 km]: 8.044 ms
Testing download speed................................................................................
Download: 49.93 Mbit/s
Testing upload speed......................................................................................................
Upload: 11.19 Mbit/s

If "speedtest-cli" don't work, then take "speedtest-cli --secure" - then it will work

selaw2
boot-images auflisten

1) ls -1s /boot
2) dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'

selaw2
raspberry pi Grafische Konsole auf deinem PC starten

ssh -X pi@192.168.1.2 lxpanel

selaw2
vls aus Kommandozeile: Das Kommando nvlc

nvlc http://metafiles.gl-systemhaus.de/hr/hrinfo_1.m3u
# damit hören sie "hrinfo" - Livestream von HR-Info
###########
pi@raspberrypi:~ $ ps -ef | grep vlc | grep -v grep
pi 6212 1 9 23:15 ? 00:02:32 /usr/bin/vlc -I dummy http://metafiles.gl-systemhaus.de/hr/hrinfo_1.m3u
##############
*/1 * * * * /usr/local/bin/radio_hr-info
cat /usr/local/bin/radio_hr-info
#!/bin/bash
#/usr/bin/vlc http://metafiles.gl-systemhaus.de/hr/hrinfo_2.m3u &
if [ `ps -ef | grep vlc | grep -v grep | wc -l` -ne 1 ]
then cvlc http://metafiles.gl-systemhaus.de/hr/hrinfo_1.m3u &
else echo "ok"
fi
Es wird jeder Minute geprüft, ob Radio eingeschaltet ist. Falls nicht, dann wird cvlc mit hrinfo_1.m3u gestartet:
cvlc http://metafiles.gl-systemhaus.de/hr/hrinfo_1.m3u &

PS: Erfahrungsgemäß bricht die Verbindung zum Portal metafiles.gl-systemhaus.de/hr/hrinfo leider (aus ungeklärtem Grund) sporadisch ab. Ich habe eine "Krücke" gefunden. Im crontab habe ich folgendes Skript eingetragen:
*/1 * * * * /usr/local/bin/radio_hr-info
cat /usr/local/bin/radio_hr-info
#!/bin/bash
#/usr/bin/vlc http://metafiles.gl-systemhaus.de/hr/hrinfo_2.m3u &
B=`date +"%d"``date +%"m"``date +"%y"`_`date | awk '{print $4}' | sed s/\:/-/g`;
if [ `ps -eLf | grep vlc | grep -v grep | wc -l` -ne 5 ]
then
ps -eLf | grep vlc | grep -v grep > /tmp/vlc_$B
kill -9 `ps -eLf | grep vlc | grep -v grep | awk '{print $2}'`;
cvlc http://metafiles.gl-systemhaus.de/hr/hrinfo_2.m3u &

else echo "ok"
fi
---------
Das Skript prüft, ob Prozesse von vlc laufen. Die Stückzahl der Prozessen sollte 5 sein. Falls das nicht der Fall sein sollte, werden die Prozesse gekillt und mit dem Kommando: cvlc http://metafiles.gl-systemhaus.de/hr/hrinfo_2.m3u &
wird die Musikausgabe erneut gestartet - und es funktioniert ;)

selaw2
break unter bashing

#!/bin/bash
i=0

while [[ $i -lt 10 ]]
do
echo "Number: $i"
((i++))
if [[ $i -eq 5 ]]; then
break
fi
done

selaw2
continue unter bashing

#!/bin/bash
i=0

while [[ $i -lt 5 ]]; do
((i++))
if [[ "$i" == '2' ]]; then
continue
fi
echo "Number: $i"
done

selaw2
Radio aus Konsole hören
selaw2
Online-Radio

Das Problem: Online-Radio bricht ab und zu ab (der Ton verschwindet).
D.h., dass Prozess-Zahl ändert sich.
Normalerweise die Zahl der vlc-Prozesse gleich 6:

A=`ps -AT | grep vlc | awk '{print $2}' | wc -l`
echo $A
6
------------------------------------
#!/bin/bash

# Variablendefinizion

A=`ps -AT | grep vlc | awk '{print $2}' | wc -l`

if [ $A -eq 6 ];

then

echo "OK";

else

# Falls die Zahl der Prozesse nicht equivalent 6, dann sollen die "Reste" des vlc-Prozess gekillt werden

kill `ps -AT | grep vlc | awk '{print $2}'`;

cvlc http://xxxxxxxxxxxxhrinfo_2.m3u &

fi
------------------------------------

selaw2
Umgebung nach wlan-Geräte scannen

# sudo iwlist wlan0 scan | grep ESSID