Mittwoch, 16. Oktober 2013

Privat Cloud: Lokalen Ordner und FTP Server mit WinSCP automatisch synchronisieren.




Eine kurze Anleitung wie man einen lokalen Ordner unter Windows automatisch mit einem FTP Server synchronisieren kann. Eine Art einfache Version von Dropbox oder Google Drive aber Privat und mit einer sicheren Verbindung wenn es der Server zulässt. Dafür wird das FTP Tool WinSCP verwendet.

Was braucht man dazu?

- Einen FTP-Server
- Einen WinSCP FTP-Client
- Eine sichere Verbindung mit explicit tls
- 3 Minuten Zeit

Schritt 1

Notiert euch eure Verbindungsdaten für euren FTP Server. Serveradresse, Benutzername und Passwort.
Ladet dann den WinSCP FTP-Client herunter und installiert ihn, merkt euch den Installationspfad. Dann verbindet euch zu eurem FTP Server mit WinSCP und speichert dabei den Fingerprint eurer Verbindung.

Diesen findet ihr hier:



Schritt 2

Einen Ordner erstellen den ihr mit dem FTP Server synchronisieren wollt.
Zum Beispiel:
C:\Users\techii\Documents\share
Einen Ordner erstellen oder auswählen den ihr als Speicher verwenden wollt.
Zum Beispiel:
IP-ZU-EUREM-FTP-SERVER\share

Schritt 3


Eine Batch Datei erstellen.
Zum Beispiel:
C:\Users\techii\Documents\synch.bat
Eine synch.bat Datei macht man, in dem man Notepad öffnet und bei Speichern unter die Option Alle Dateien bei Dateityp auswählt.

In dieser Datei speichert ihr alle Infos die es braucht die beiden Ordner synchron zu halten und bei der Ausführung werden die Ordner synchronisiert.
ACHTUNG: Wenn ihr das Passwort in der Datei speichert kann jemand der Zugriff auf diese Datei hat den Zugang zum FTP Server haben.

Die folgende Beispiel Batch Datei schreibt eine share.txt Datei die von WinSCP gelesen wird.
Ersetzt folgende Informationen:
FTP-SERVER-IP-ADDRESS (Zum Beispiel: 127.0.0.1)
FTP-SERVER-USERNAME (Zum Beispiel: USER)
FTP-SERVER-PASSWORT (Zum Beispiel: Passwort)
FTP-SERVER-FINGERPRINT (Zum Beispiel: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX)
FTP-SERVER-PFAD (Zum Beispiel: /share)
PFAD-WINSCP (Zum Beispiel: "C:\Program Files (x86)\WindSCP\")
PFAD-ZUM-LOKALEN-SHARE-ORDNER (Zum Beispiel: C:\Users\techii\Documents\share)
PFAD-ZU-DIESEM-SKRIPT (Zum Beispiel: C:\Users\techii\Documents\)


 @ECHO Off  
 TITLE Synchronisation mit FTP-SERVER-IP-ADDRESS
 mode con:cols=120 lines=25  
 COLOR 8F  
 echo Synchronisation gestartet
 echo # Automatisch abbrechen bei einem Fehler>share.txt
 echo option batch abort>>share.txt
 echo # Überschreiben ohne Bestätigung>>share.txt
 echo option confirm off>>share.txt
 echo # Verbindungsteil>>share.txt
 echo open ftp://FTP-SERVER-USERNAME:FTP-SERVER-PASSWORT@FTP-SERVER-IP-ADDRESS -explicittls -certificate="FTP-SERVER-FINGERPRINT" >>share.txt
 echo # Binary Modus forcieren>>share.txt
 echo option transfer binary>>share.txt
 echo # Pfad beim FTP Server ändern>>share.txt
 echo cd /FTP-SERVER-PFAD>>share.txt
 echo # Pfad zum lokalen Ordner ändern>>share.txt
 echo lcd PFAD-ZUM-LOKALEN-SHARE-ORDNER>>share.txt
 echo # Beide Ordner synchronisieren>>share.txt
 echo synchronize both PFAD-ZUM-LOKALEN-SHARE-ORDNER FTP-SERVER-PFAD -delete>>share.txt
 echo # Verbindung beenden>>share.txt
 echo close>>share.txt
 echo # WinSCP schliessen>>share.txt
 echo exit>>share.txt

 REM Ins WinSCP Verzeichnis wechseln und Skript ausfuehren und eine Log-Datei erstellen
 cd "PFAD-WINSCP"
 WinSCP.com /script=PFAD-ZU-DIESEM-SKRIPT\share.txt /log=PFAD-ZU-DIESEM-SKRIPT\sftplog.txt
 echo Synchronisation fertig
 ping localhost -n 2 >NUL
 exit

Schritt 4

Einen Task erstellen im Windows Task  Planer. Einfach auf Start dann taskschd.msc eingeben. Dort erstellt ihr einen Task nach belieben und tragt dann bei Neue Aktion die Batch Datei und den Pfad zur Batchdatei ein. Wie man einen Task erstellt könnt ihr hier nachlesen:
http://www.winfaq.de/faq_html/Content/tip2500/onlinefaq.php?h=tip2548.htm


So das wärs, nun habt ihr ein automatisches Synchronisationsskript in eure Private Cloud.
Es gibt auch APPs für eure Mobilen Geräte die das selbe machen. So habt ihr auch auf euren Handys oder Tablets immer alle Daten synchron.

Erweitertes Beispiel

Hier noch ein Beispiel mit einer Abfrage wo ihr auswählen könnt ob ihr nur Downloaden, Uploaden oder Synchronisieren wollt. Auch hier müsst ihr die Einstellungen zuerst anpassen.

 @ECHO Off  
 TITLE Network  
 mode con:cols=120 lines=25  
 COLOR 8F  
 echo Start synchronisation  
 :start  
 cls  
 REM CHOOSE 1,2,3 for different options  
 echo.  
 echo.  
 echo.   
 Echo  (1) upload  
 echo  (2) download  
 echo  (3) sync both  
 echo.  
 CHOICE /C 123 /M "=>"  
   
 if errorlevel 3 goto both  
 if errorlevel 2 goto download  
 if errorlevel 1 goto upload  
 REM only Download  
 :download  
 cd "C:\Users\techii\Documents\bat\"  
 del share.txt  
 echo # Automatically abort script on errors>>share.txt  
 echo option batch abort>>share.txt  
 echo # Disable overwrite confirmations that conflict with the previous>>share.txt  
 echo option confirm off>>share.txt  
 echo # Connect using a password>>share.txt  
 echo open ftp://username:password@127.0.0.1 -explicittls -certificate="XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX">>share.txt  
 echo # Force binary mode transfer>>share.txt  
 echo option transfer binary>>share.txt  
 echo # Change remote directory>>share.txt  
 echo cd /share>>share.txt  
 echo lcd C:\Users\techii\Documents\share>>share.txt  
 echo synchronize local C:\Users\techii\Documents\share /share -delete>>share.txt  
 echo # Disconnect>>share.txt  
 echo close>>share.txt  
 echo # Exit WinSCP>>share.txt  
 echo exit>>share.txt  
   
 rem Execute script  
 cd "C:\Program Files (x86)\WinSCP\"  
 WinSCP.com /script=C:\Users\techii\Documents\bat\share.txt /log=C:\Users\techii\Documents\bat\sftplog.txt  
   
 goto end  
   
 REM Only Upload  
 :upload  
 cd "C:\Users\techii\Documents\bat\"  
 del share.txt  
 echo # Automatically abort script on errors>>share.txt  
 echo option batch abort>>share.txt  
 echo # Disable overwrite confirmations that conflict with the previous>>share.txt  
 echo option confirm off>>share.txt  
 echo # Connect using a password>>share.txt  
 echo open ftp://username:password@127.0.0.1 -explicittls -certificate="XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX">>share.txt  
 echo # Force binary mode transfer>>share.txt  
 echo option transfer binary>>share.txt  
 echo # Change remote directory>>share.txt  
 echo cd /share>>share.txt  
 echo lcd C:\Users\techii\Documents\share>>share.txt  
 echo synchronize remote C:\Users\techii\Documents\share /share -delete>>share.txt  
 echo # Disconnect>>share.txt  
 echo close>>share.txt  
 echo # Exit WinSCP>>share.txt  
 echo exit>>share.txt  
   
 rem Execute script  
 cd "C:\Program Files (x86)\WinSCP\"  
 WinSCP.com /script=C:\Users\techii\Documents\bat\share.txt /log=C:\Users\techii\Documents\bat\sftplog.txt  
   
 goto end  
   
 REM Synchronisation  
 :both  
 cd "C:\Users\techii\Documents\bat\"  
 del share.txt  
 echo # Automatically abort script on errors>>share.txt  
 echo option batch abort>>share.txt  
 echo # Disable overwrite confirmations that conflict with the previous>>share.txt  
 echo option confirm off>>share.txt  
 echo # Connect using a password>>share.txt  
 echo open ftp://username:password@127.0.0.1 -explicittls -certificate="XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX" >>share.txt  
 echo # Force binary mode transfer>>share.txt  
 echo option transfer binary>>share.txt  
 echo # Change remote directory>>share.txt  
 echo cd /share>>share.txt  
 echo lcd C:\Users\techii\Documents\share>>share.txt  
 echo synchronize both C:\Users\techii\Documents\share /share -delete>>share.txt  
 echo # Disconnect>>share.txt  
 echo close>>share.txt  
 echo # Exit WinSCP>>share.txt  
 echo exit>>share.txt  
   
 rem Execute script  
 cd "C:\Program Files (x86)\WinSCP\"  
 WinSCP.com /script=C:\Users\techii\Documents\bat\share.txt /log=C:\Users\techii\Documents\bat\sftplog.txt  
   
 goto end  
   
 :end  
 echo Synchronisation finished  
 ping localhost -n 5 >NUL  
 REM Remove pause to exit automaticly  
 pause  
 exit  



Viel spass mit eurer eigenen Cloud!

Donnerstag, 3. Oktober 2013

Einen einfachen Proxy einrichten um bei der Arbeit oder in der Schule auf Facebook oder Youtube zu surfen



Wer kennt das nicht, man will in der Schule oder bei der Arbeit schnell sein Facebook Account anschauen, aber es geht nicht weil es von den Administratoren gesperrt wurde. Selbstverständlich, gibt es da verschiedene Möglichkeiten eine solche Sperre zu umgehen. Ich hatte darüber schon mal Berichtet, und für diesen Fall hatte ich eine kleine Anleitung geschrieben:

http://the-tech-blog-blogger.blogspot.com/2012/04/youtube-sperre-umgehen.html
http://the-tech-blog-blogger.blogspot.com/2011/07/facebook-sperre-umgehen.html

Leider sind diese Proxyseiten meist nicht lange Online, oder langsam, oder unsicher, oder schlicht und einfach auch gesperrt, denn solche Filterlisten werden auch ständig angepasst.

Darum nun hier die ultimative Lösung, um wieder frei im Web zu surfen. Und das ohne ein Programm zu installieren.

Ich werde euch in der folgenden kleinen und einfachen Anleitung erklären, wie ihr mit dem Proxy Java Tool Scotty Transporter http://www.scotty-transporter.org/ selber einen Proxy einrichten könnt, der alle euren Traffic über einen harmlosen Google Server leitet. Und darum funktioniert dieser Weg die Sperre zu umgehen so gut, weil Google ist bei keinem Gesperrt und wird es auch nie sein :)


Hier seht ihr wie es funktioniert:


Es werden alle Anfragen die ihr an Facebook schickt, zuerst an den Proxy Gateway geschickt der nicht gesperrt ist. So umgeht ihr den Filter. Dieses Tool wurde eigentlich erfunden um Filter und Zensur von Unrechtsregimen zu umgehen. Genau richtig, gegen die Tyranen die Social Media verbieten!



Vorbereitung: Was brauch ihr dazu?

Die Rechnen auf denen die Seiten gesperrt sind brauchen folgendes, sonst müsst ihr gar nicht weiterlesen:
- auf dem PC muss Java laufen.
- du musst die Proxy Einstellungen ändern können, oder besser eine Portable Firefox Version benützen können.
 

Dann mal los, keine Angst es sieht kompliziert aus, aber es eigentlich ganz einfach.
Die Anleitung ist übrigens von hier (English):
http://www.scotty-transporter.org/

Schritt 1

Schritt 1-6 am Besten Zuhause vorbereiten.

Ihr braucht ein Google Account. Mit dem meldet ihr euch bei https://appengine.google.com/ an. Bei Appengine kann man Applikationen bei Google hosten lassen. Google erlaubt es euch da bis zu 10 Applikationen Gratis laufen zu lassen.

Dann müsst die Appengine SDK für Java runterladen und entpacken:
https://developers.google.com/appengine/downloads#Google_App_Engine_SDK_for_Java


Schritt 2

Ihr müsst nun eine Application erstellen auf der Google Seite. Gebt der App einen Application Identifier, einen Application Title und macht sie Open to all Google Accounts users (default).
Merkt euch den Application Identifier ihr werdet ihn bei den nächsten Schritten brauchen!


Schritt 3

Lade und entpacke scotty-gateway-gae-0.9.2.zip.
https://github.com/downloads/SSilence/scotty/scotty-gateway-gae-0.9.2.zip

Schritt 4

Im Ordner WEB-INF von scotty-gateway-gae-0.9.2 müsst ihr die Datei appengine-web.xml editieren:


 <?xml version="1.0" encoding="utf-8"?>  
  <appengine-web-app xmlns="http://appengine.google.com/ns/1.0">  
  <application>DEIN.application-identifier</application>  
  <version>2</version>  
  <threadsafe>true</threadsafe>  
  </appengine-web-app>  

Ihr müsst nur auf Linie 3 den Application Identifier (Rot markiert) eintragen den ihr euch zuvor gemerkt habt.

Schritt 5

Ihr müsst nun folgende Pfade kennen:
Den Pfad zu \appengine-java-sdk-1.8.5\appengine-java-sdk-1.8.5\bin\appcfg.cmd
Und den Pfad zu \scotty-gateway-gae-0.9.2

Damit erstellt ihr folgenden Befehl:

 PFADZU\appcfg update PFADZU\scotty-gateway-gae-0.9.2 


Sieht bei mir so aus:

 C:\Downloads\appengine-java-sdk-1.8.5\appengine-java-sdk-1.8.5\bin\appcfg update C:\Downloads\scotty-gateway-gae-0.9.2  

Diesen Befehl müsst ihr nun in der Console ausführen. Einfach auf Start und dann cmd eintippen und Enter drücken. Nun den Befehl mit dem Richtigen Pfad hineinkopieren und ausführen.

Dann müsst ihr eure Emailadresse und euer Passwort für euer Google Account eingeben.
Achtung:
Wenn ihr eine 2 Phasen-Authentifizierung habt, müsst ihr zuerst in euren Kontoeinstellungen ein Passwort für die Applikation erstellen. Einfach auf Kontoeinstellungen und dann auf Sicherheit und dann auf Anwendungsspezifische Passwörter verwalten. Oder diesen Link verwenden:
https://accounts.google.com/b/0/IssuedAuthSubTokens?hl=de
Das Anwendungsspezifische Passwort gebt ihr dann an wenn es euch nach dem Passwort fragt in der Console. (Nach der Email)


Schritt 6

Deine URL ist:
http://DEIN.application-identifier.appspot.com


Nun bist du schon fast fertig. Am Besten lädst du dir die Portable Version von Firefox herunter. Aber es funktioniert auch wenn ihr einfach die Proxy Einstellungen bei eurem Browser auf der Arbeit oder in der Schule verändert. Danach die Datei: https://github.com/downloads/SSilence/scotty/scotty-transporter-0.9.2.jar runterladen und ins Verzeichnis von Firefox Portable legen.
Im selben Ordner müsst ihr dann auch eine Batch Datei mit folgendem Inhalt erstellen:

 @Echo On  
 java -jar scotty-transporter-0.9.2.jar -p 8008 -g http://www.DEIN.application-identifier.appspot.com/gateway.php:8008   

Wieder den Application Identifier anpassen.
Falls ihr nicht wisst wie man eine Batch Datei macht hier einer kurze Anleitung:
Eine proxy.bat Datei macht man, in dem man Notepad öffnet und bei Speichern unter die Option Alle Dateien bei Dateityp auswählt.

Der Firefox Portable Ordner sieht dann so aus:




Schritt 7

Jetzt packt ihr den Firefox Portable Ordner in ein Zip File und mailt es euch zu, oder ihr packt es auf einen USB Stick. Diesen nehmt ihr dann zur Arbeit oder in die Schule mit.

Auf dem Rechner mit Facebooksperre macht ihr dann folgendes:

Ihr startet Firefox Portable und schaut was für eine IP ihr habt:
http://www.whatsmyip.org/

Dann einfach die proxy.bat Datei starten:


Dann in den Firefoxeinstellungen folgendes verändern:




Manueller Proxy auf 127.0.0.1 und Port 8008.

FERTIG! 
Nun testen ob es auch wirklich funktioniert in dem ihr wieder auf http://www.whatsmyip.org/ geht.
Ihr solltet nun eine IP-Adresse von Google haben und wieder auf Facebook und Youtube surfen können.

Ihr solltet auch in der Taskleiste ein kleines Symbol sehen wenn der Proxy läuft.

Bitte beachtet, dass man rausfinden kann das ihr einen Proxy benutzt, der Traffic selber ist aber verschlüsselt (bis zum Google Server). Wenn ihr nun im Privat Modus surft, weiss man auch nicht welche Seiten ihr benutzt habt.

Viel spass beim surfen auf den verbotenen Seiten:) 

Montag, 24. Juni 2013

Erstelle eine eigene dynamische motd für dein Linux Debian Mint ssh login


Hier eine kleine Schritt für Schritt Anleitung wie man eine dynamische motd kreiert die beim Login angezeigt wird. Mein Beispielskript liest den Hostnamen, den Namen der Linux Distribution, die Kernelversion, wann der Rechner gebootet hat, wie lange es schon läuft, wann er installiert wurde, wie viele Reboots schon gemacht wurden, was für ein CPU drin ist, wie warm der CPU ist, wieviel freier RAM und Total RAM, wieviel Diskspace (hier mein RAID und meine SSD), die durchschnittliche Last für 1,5,und 15 min, wieviele Prozesse das laufen und welche davon von euch sind, welche interne und externe IP ihr habt, welche SSH terminal nummer ihr habt, welche User eingeloggt sind und wieviele es total sind, wann ihr euch zuletzt eingeloggt habt und wie das Wetter bei euch ist. Dann kommt noch eine netter Random Text und es wird noch gemessen wie lange es ging die Informationen zu erstellen und es gibt eine Progressbar. Ausserdem wird man je nach Tageszeit anders begrüsst (Good evening, Good morning,..)

Die Informationen werden mit einem bash Skript ausgelesen. Die eigentliche motd wird einfach geleert. Wenn ihr noch nicht so fit seit mit Konsolentexteditoren, dann solltet ihr das ganze in einem grafischen Editor machen geht einfacher. Sollte eigentlich auch für Ubuntu und Rasperry pi gehen.

1. Schritt - Die alte Motd entfernen


Damit die Motd auch nach dem Reboot wieder gleich bleibt muss man den Symbolischen Link zerstören.

Zuerst mal eine Backup der alten Dateien, damit ihr wieder den ursprünglichen Zustand herstellen könnt, falls was schiefgeht.

 sudo mv /etc/motd.tail /etc/motd.tail.bak 
 sudo mv /etc/motd /etc/motd.bak 
 sudo mv /var/run/motd /var/run/motd.bak 

Dann die Dateien löschen:

 sudo rm /etc/motd.tail   
 sudo rm /etc/motd  
 sudo rm /var/run/motd   

Dann die Dateien wieder erstellen, aber leer.

 sudo nano /etc/motd.tail   
 sudo nano /etc/motd  
 sudo nano /var/run/motd   

2. Schritt - Eine Skript Datei erstellen und ausführbar machen


Erstellt erst mal eine leere Datei mit folgendem Inhalt:
 #!/bin/bash  
 #Mein erstes Skript  

Das geht so, und dann gleich ausführbar machen:
 sudo nano /usr/local/bin/neuemotd.sh  
 sudo chmod +x /usr/local/bin/neuemotd.sh  

Dieses Skript nun in die Datei /etc/profile reintun damit sie bei jedem login angezeigt wird.

 sudo nano /etc/profile  

Einfach am Ende der Datei folgendes einfügen:

 /usr/local/bin/neuemotd.sh  

Und schon habt ihr ein Skript das ihr nach euren Ideen gestalten könnt. Oder ihr seit faul und kopiert einfach weiter unten das Skript was ich schon gemacht habe. Allerdings kann es sein das es in deiner Distro vielleicht nicht funktioniert ;)

3. Schritt - Ein nettes ASCII Art Logo


Geht auf eine Webseite die ASCII Art generiert, oder sucht euch ein nettes Linux ASCII logo.
http://www.network-science.de/ascii/


Dann nehmt das und schreibt das mit echo Befehlen in das Skript
 sudo nano /usr/local/bin/neuemotd.sh 

Hier das was ich verwendet habe:
 echo -e "\n";  
 echo -e "\033[1;31m     _,met\$\$\$\$\$gg.";  
 echo -e "    ,g\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$P.";  
 echo -e "   ,g\$\$P\"\"    \"\"\"Y\$\$.\".";  
 echo -e "  ,\$\$P'       \`\$\$\$.";  
 echo -e " ',\$\$P    ,ggs.   \`\$\$b:";  
 echo -e " \`d\$\$'   ,\$P\"'  .  \$\$\$";  
 echo -e "  \$\$P   d\$'   ,  \$\$P";  
 echo -e "  \$\$:   \$\$.  -  ,d\$\$'   ";  
 echo -e "  \$\$;   Y\$b._  _,d\$P'  \033[0m   _,      _,   ,'\`.";  
 echo -e "\033[1;31m  Y\$\$.  \`.\`\"Y\$\$\$\$P\"'\033[0m     \`\$\$'     \`\$\$'   \`. ,'";  
 echo -e "\033[1;31m  \`\$\$b   \"-.__      \033[0m  \$\$      \$\$    \`'";  
 echo -e "\033[1;31m  \`Y\$\$b           \033[0m  \$\$      \$\$     _,      _";  
 echo -e "\033[1;31m   \`Y\$\$.        \033[0m ,d\$\$\$g\$\$ ,d\$\$\$b. \$\$,d\$\$\$b.\`\$\$' g\$\$\$\$\$b.\`\$\$,d\$\$b.";  
 echo -e "\033[1;31m    \`\$\$b.     \033[0m  ,\$P' \`\$\$ ,\$P' \`Y\$. \$\$\$' \`\$\$ \$\$ \"'  \`\$\$ \$\$\$' \`\$\$";  
 echo -e "\033[1;31m     \`Y\$\$b.   \033[0m   \$\$'  \$\$ \$\$'  \`\$\$ \$\$'  \$\$ \$\$ ,ggggg\$\$ \$\$'  \$\$";  
 echo -e "\033[1;31m      \`\"Y\$b._   \033[0m  \$\$   \$\$ \$\$ggggg\$\$ \$\$   \$\$ \$\$ ,\$P\"  \$\$ \$\$  \$\$";  
 echo -e "\033[1;31m        \`\"\"\"\"  \033[0m \$\$  ,\$\$ \$\$.    \$\$  ,\$P \$\$ \$\$'  ,\$\$ \$\$  \$\$";  
 echo -e "\033[0m             \`\$g. ,\$\$\$ \`\$\$._ _., \$\$ _,g\$P' \$\$ \`\$b. ,\$\$\$ \$\$  \$\$";  
 echo -e "              \`Y\$\$P'\$\$. \`Y\$\$\$\$P',\$\$\$\$P\"' ,\$\$. \`Y\$\$P'\$\$.\$\$. ,\$\$.";  
 echo -e "\n";  

Das könnt ihr nun gleich ausprobieren in dem ihr in der Konsole folgendes schreibt:
 /usr/local/bin/neuemotd.sh   

4. Schritt - Informationen auslesen.


Die Infos werden zuerst ausgelesen und einer Variablen zugewiesen, die dann unten ausgegeben wird.
Hier die Ausgabe der Variablen, das kopiert ihr unter die ASCII Kunst:

 echo -e "  
                     \033[1;34m$HELLOSTRING $WHOAMI!\033[0;37m   
 \033[0;37m+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
 \033[0;37m+  \033[1;31mHostname....: \033[0m$HOSTN  
 \033[0;37m+  \033[1;31mDistro......: \033[0m$DISTRO1 $DISTRO2 $DISTRO3  
 \033[0;37m+  \033[1;31mKernel......: \033[0m$KERNEL  
 \033[0;37m+  \033[1;31mBoottime....: \033[0m$BOOTTIME  
 \033[0;37m+  \033[1;31mUptime......:\033[0m$UPTIME  
 \033[0;37m+  \033[1;31mInstalled...: \033[0m$INSTALLED  
 \033[0;37m+  \033[1;31mReboots.....: \033[0m$REBOOT  
 \033[0;37m+  \033[1;31mCPU.........: \033[0m$CPU  
 \033[0;37m+  \033[1;31mCPU Temp....: \033[0m$CPUTEMP  
 \033[0;37m+  \033[1;31mMemory......: \033[0m$MEMORY1 MB (Free) / $MEMORY2 MB (Total)  
 \033[0;37m+  \033[1;31mRAID.(Data).: \033[0m$RAID2 TB (Free) / $RAID1 TB (Total)  
 \033[0;37m+  \033[1;31mDisk.(OS)...: \033[0m$DISK2 GB (Free) / $DISK1 TB (Total)  
 \033[0;37m+  \033[1;31mLoad........: \033[0m$LOAD  
 \033[0;37m+  \033[1;31mProcesses...: \033[0m$PROC1 (Total) $PROC2 ($WHOAMI)  
 \033[0;37m+  \033[1;31mIP Address..: \033[0m$IP1 and $IP2  
 \033[0;37m+  \033[1;31mNetwork.....: \033[0m$NETWORK  
 \033[0;37m+  \033[1;31mSSH tty.....: \033[0m$SSHTTY  
 \033[0;37m+  \033[1;31mUsers.......: \033[0m$USERS  
 \033[0;37m+  \033[1;31mLast login..: \033[0m$LAST  
 \033[0;37m+  \033[1;31mWeather.....: \033[0m$WEATHER  
 \033[0;37m++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
 "  
 echo -e "  
 $FORTUNE  
 $UPDATES  
 ";  

Die Zuweisungen fügt ihr oben nach #!/bin/bash #Mein erstes Skript ein. Achtung ihr müsst ein paar Dinge anpassen sonst funktioniert es bei euch nicht (richtig).


 echo -e "\n";  
 # Die Startzeit merken um die Gesamtzeit der Skriptausführung zu messen  
 start=`date +%s.%N`  
 # Die Begrüssungsnachrichten nach Tageszeit berechnen  
 check=`date +%H`  
 if [ $check -ge 06 -a $check -le 12 ]  
 then  
     HELLOSTRING="Good morning"  
 elif [ $check -ge 12 -a $check -le 17 ]  
 then  
     HELLOSTRING="Good afternoon"  
           else  
     HELLOSTRING="Good evening"  
 fi  
 #Hostname auslesen  
 HOSTN=`hostname`  
 #Name der Linux Distribution auslesen  
 DISTRO1=`lsb_release -s -d`   
 DISTRO2=`lsb_release -c | awk -F: '{print $2}' | sed -e 's/^[ \t]*//'`   
 DISTRO3=`cat /etc/debian_version`  
 #Kernel version auslesen  
 KERNEL=`uname -r`  
 #Zeit des aufstartens auslesen  
 BOOTTIME=`grep btime /proc/stat | cut -d ' ' -f2 | perl -MDate::Manip -lane 'printf "%s\n", UnixDate(ParseDateString("epoch $_"), "%c");'`  
 #Wie lange der Rechner schon läuft  
 UPTIME=`uptime | grep -Eo 'up .+ user' | sed -e 's/:/ hours /' -e 's/ min//' -re 's/^up\s+/\x1b[0;36m\x1b[0;37m /' | sed -re 's/,\s+[0-9]+ user$/ minutes/' -e 's/,//g' -e 's/00 minutes//' | sed -re 's/0([1-9] minutes)/\1/' -e 's/(1 hour)s/\1/' -e 's/(1 minute)s/\1/' | sed -e 's/^[ \t]*//'`  
 #Welcher CPU verbaut wurde  
 CPU=`cat /proc/cpuinfo | grep "model name" | awk -F: '{print $2}' | sed -n '1p' |sed -e 's/^[ \t]*//'`  
 #Die Temperatur der CPU  
 CPUTEMP=`sensors | grep "Physical id 0:" | awk -F: '{print $2}' | sed -e 's/^[ \t]*//'`  
 #Freier und Totaler RAM  
 MEMORY1=`cat /proc/meminfo|grep 'MemF'| awk '{print int($2/1000)}'`  
 MEMORY2=`cat /proc/meminfo|grep 'MemT'| awk '{print int($2/1000)}'`   
 #Freier und Totaler Diskspace, muss angepasst werden!!  
 #Gibt df-h ein und wählt aus welche Disk ihr anzeigen wollt  
 RAID1=`df -h | grep "md0" | awk '{print $2}' | sed 's/.$//'`  
 RAID2=`df -h | grep "md0" | awk '{print $4}' | sed 's/.$//'`  
 DISK1=`df -h | grep "rootfs" | awk '{print $2}' | sed 's/.$//'`  
 DISK2=`df -h | grep "rootfs" | awk '{print $4}' | sed 's/.$//'`  
 #Die durchschnittliche Systemlast der letzten 1,5 und 15 Minuten  
 LOAD=`cat /proc/loadavg | awk '{print $1" (1 minute) "$2" (5 minutes) "$3" (15 minutes)"}'`  
 #Totale Anzahl von Prozessen und Prozesse die mit deinem Login laufen.  
 PROC1=`ps -ef | wc -l | sed -e 's/^[ \t]*//'`  
 PROC2=`ps -u "$(echo $(w -h | cut -d ' ' -f1 | sort -u))" o user= | sort | uniq -c | sort -rn | awk '{print $1}' | sed -e 's/^[ \t]*//'`  
 #Die lokale und externe IP Adresse, wer wert auf Datenschutz legt sollte die Abfrage vielleicht weglassen.  
 IP1=`netstat -n -t | awk '{print $4}' | grep -o "[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" | grep -v "127.0.0.1" | sort -u`  
 IP2=`wget -q -O - http://icanhazip.com/ | tail || No Network Connection!`  
 #Wieviel die ausgesuchte Netzwerkschnittstelle (hier eth1, evt anpassen) total Up und Down Traffic hat  
 NETWORK=`netstat -N -i | grep eth1 | awk '{if ($1 > 0 && $4 > 0) print $1,int($4/1000000)"GiB down",int($8/1000000)"GiB up"}' || No Connection!`  
 #Die Usernamen der eingeloggten User und die totale Anzahl der User.  
 USERS=`users | awk '{for(i=1;i<=NF;i++){a[$i]++}}END{for(i in a){print i"\t"a[i]}}' |sed -e 's/^[ \t]*//'`  
 #Wann dein letzter login war  
 LAST=`last -R $username | awk '{print $3,$4,$5,$6}' | sed -n '2p' |sed -e 's/^[ \t]*//'`  
 #Wetterdaten auslesen von accuweather, unbedingt den logCode anpassen!!! Hier wird das Wetter von Zürich angezeigt.  
 WEATHER=`curl -s "http://rss.accuweather.com/rss/liveweather_rss.asp?metric=1&locCode=EUR|CH|316622|ZURICH" | LANG=de_DE.UTF-8 sed -n '/Currently:/ s/.*: \(.*\): \([0-9]*\)\([C]\).*/\2°\3, \1/p'`  
 #Gibt die Sprüche unter den Informationen aus  
 FORTUNE=`/usr/games/fortune -as | sed "s/^/    /"`  
 #Gibt die Updates für das System aus falls es welche gibt  
 UPDATES=`apt-get --just-print upgrade 2>&1 | perl -ne 'if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "PROGRAM: $1 INSTALLED: $2 AVAILABLE: $3\n"}'`  
 #Gibt deinen Usernamen aus  
 WHOAMI=`whoami`  
 #Gibt deine SSH terminal nummer aus  
 SSHTTY=`printenv SSH_TTY`  
 #Diese info ist hier hardcoded, kann aber mit dem Skript unterhalb ausgelesen werden, braucht aber erweiterte Rechte.  
 INSTALLED="Wed Mar 27 21:16:26 2013"  
 #sudo tune2fs -l $(df -P / | tail -n1 | cut -d' ' -f1 ) | grep 'Filesystem created:'  
 #Hier wird ein Textfile ausgelesen das ein Skript erzeugt das beim Systemstart ausgeführt wird.  
 REBOOT=`cat /home/techii/bootcount.txt`  
 #Eine Linie abstand  
 echo -e "\n";  

Am Schluss wird noch das Ergebnis der Zeitberechnung ausgegeben:
 end=`date +%s.%N`  
 runtime=$(echo "$end - $start" | bc)  
 echo "Execution time was:" $runtime "seconds"  

5 Schritt - Das Rebootcounter Skript


Hier eine Anleitung wie man das Rebootzähl-Skript macht, ihr müsst hier und oben Anpassen wohin die Textdatei geschrieben und ausgelesen werden soll, hier ist es:
/home/techii/bootcount.txt
Ihr müsst die beiden Skripte  /usr/local/bin/bootcount.sh und /etc/init.d/bootcount erstellen und wie folgt anpassen:

 #! /bin/sh  
 # /usr/local/bin/bootcount.sh  
 #  
 #  
 # Load bootcount.txt and increment by 1 then exit  
 count=$( cat /home/techii/bootcount.txt )  
 echo $( expr $count + 1 ) > /home/techii/bootcount.txt  
 count2=$( cat /home/techii/bootcount.txt )  
 echo You rebootet $count2 times!  
 exit 0 
 
 #! /bin/sh  
 # /etc/init.d/bootcount  
 ### BEGIN INIT INFO  
 # Provides:     bootcount  
 # Required-Start:  $remote_fs $syslog  
 # Required-Stop:   $remote_fs $syslog  
 # Default-Start:   2 3 4 5  
 # Default-Stop:   0 1 6  
 # Short-Description: Simple script to start bootcount at boot and count the number of reboots  
 # Description:    A simple script which will start / stop a program a boot / shutdown.  
 ### END INIT INFO  
 # If you want a command to always run, put it here  
 # Carry out specific functions when asked to by the system  
 case "$1" in  
  start)  
   echo "Starting bootcount"  
   # run application you want to start  
   /usr/local/bin/bootcount.sh  
   ;;  
  stop)  
   echo "Stopping bootcount"  
   # kill application you want to stop  
   killall bootcount  
   ;;  
  *)  
   echo "Usage: /etc/init.d/bootcount {start|stop}"  
   exit 1  
   ;;  
 esac  
 exit 0  
 
#Macht das Skript ausführbar  
 sudo chmod 755 /etc/init.d/bootcount   
 sudo chmod 755 /usr/local/bin/bootcount.sh   
 #Testet das Programm  
 sudo /etc/init.d/bootcount start   
 #So stopt man es  
 sudo /etc/init.d/bootcount stop   
 #Registriert das Skript damit es beim Systemstart läuft  
 sudo update-rc.d bootcount defaults   
 #So könnte man es entfernen falls es nötig ist  
 sudo update-rc.d -f bootcount remove  

Hier noch das ganze Skript mit der Progress drin aber ohne die Kommentare: 


 #!/bin/bash  

 echo -e "\n";
 echo -ne '             \033[1;31m#           \033[0m( 5%)\r'  
 start=`date +%s.%N`  
 check=`date +%H`  
 if [ $check -ge 06 -a $check -le 12 ]  
 then  
     HELLOSTRING="Good morning"  
 elif [ $check -ge 12 -a $check -le 17 ]  
 then  
     HELLOSTRING="Good afternoon"  
           else  
     HELLOSTRING="Good evening"  
 fi  
 echo -ne '             \033[1;31m##           \033[0m(10%)\r'  
 HOSTN=`hostname`  
 echo -ne '             \033[1;31m###          \033[0m(15%)\r'  
 DISTRO1=`lsb_release -s -d`   
 DISTRO2=`lsb_release -c | awk -F: '{print $2}' | sed -e 's/^[ \t]*//'`   
 DISTRO3=`cat /etc/debian_version`  
 echo -ne '             \033[1;31m####          \033[0m(20%)\r'  
 KERNEL=`uname -r`  
 echo -ne '             \033[1;31m#####         \033[0m(25%)\r'  
 BOOTTIME=`grep btime /proc/stat | cut -d ' ' -f2 | perl -MDate::Manip -lane 'printf "%s\n", UnixDate(ParseDateString("epoch $_"), "%c");'`  
 echo -ne '             \033[1;31m######         \033[0m(30%)\r'  
 UPTIME=`uptime | grep -Eo 'up .+ user' | sed -e 's/:/ hours /' -e 's/ min//' -re 's/^up\s+/\x1b[0;36m\x1b[0;37m /' | sed -re 's/,\s+[0-9]+ user$/ minutes/' -e 's/,//g' -e 's/00 minutes//' | sed -re 's/0([1-9] minutes)/\1/' -e 's/(1 hour)s/\1/' -e 's/(1 minute)s/\1/' | sed -e 's/^[ \t]*//'`  
 echo -ne '             \033[1;31m#######        \033[0m(35%)\r'  
 CPU=`cat /proc/cpuinfo | grep "model name" | awk -F: '{print $2}' | sed -n '1p' |sed -e 's/^[ \t]*//'`  
 echo -ne '             \033[1;31m########        \033[0m(40%)\r'  
 CPUTEMP=`sensors | grep "Physical id 0:" | awk -F: '{print $2}' | sed -e 's/^[ \t]*//'`  
 echo -ne '             \033[1;31m#########       \033[0m(45%)\r'  
 MEMORY1=`cat /proc/meminfo|grep 'MemF'| awk '{print int($2/1000)}'`  
 MEMORY2=`cat /proc/meminfo|grep 'MemT'| awk '{print int($2/1000)}'`   
 echo -ne '             \033[1;31m##########       \033[0m(50%)\r'  
 RAID1=`df -h | grep "md0" | awk '{print $2}' | sed 's/.$//'`  
 RAID2=`df -h | grep "md0" | awk '{print $4}' | sed 's/.$//'`  
 DISK1=`df -h | grep "rootfs" | awk '{print $2}' | sed 's/.$//'`  
 DISK2=`df -h | grep "rootfs" | awk '{print $4}' | sed 's/.$//'`  
 echo -ne '             \033[1;31m###########      \033[0m(55%)\r'  
 LOAD=`cat /proc/loadavg | awk '{print $1" (1 minute) "$2" (5 minutes) "$3" (15 minutes)"}'`  
 echo -ne '             \033[1;31m############      \033[0m(60%)\r'  
 PROC1=`ps -ef | wc -l | sed -e 's/^[ \t]*//'`  
 PROC2=`ps -u "$(echo $(w -h | cut -d ' ' -f1 | sort -u))" o user= | sort | uniq -c | sort -rn | awk '{print $1}' | sed -e 's/^[ \t]*//'`  
 echo -ne '             \033[1;31m#############     \033[0m(65%)\r'  
 IP1=`netstat -n -t | awk '{print $4}' | grep -o "[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" | grep -v "127.0.0.1" | sort -u`  
 IP2=`wget -q -O - http://icanhazip.com/ | tail || No Network Connection!`  
 #IP3=`curl -s ifconfig.me/all | grep "remote_host" | awk '{print $2}' | sed -e 's/^[ \t]*//'`  
 echo -ne '             \033[1;31m##############     \033[0m(70%)\r'  
 NETWORK=`netstat -N -i | grep eth1 | awk '{if ($1 > 0 && $4 > 0) print $1,int($4/1000000)"GiB down",int($8/1000000)"GiB up"}' || No Connection!`  
 echo -ne '             \033[1;31m###############    \033[0m(75%)\r'  
 USERS=`users | awk '{for(i=1;i<=NF;i++){a[$i]++}}END{for(i in a){print i"\t"a[i]}}' |sed -e 's/^[ \t]*//'`  
 echo -ne '             \033[1;31m################    \033[0m(80%)\r'  
 LAST=`last -R $username | awk '{print $3,$4,$5,$6}' | sed -n '2p' |sed -e 's/^[ \t]*//'`  
 echo -ne '             \033[1;31m#################   \033[0m(85%)\r'  
 WEATHER=`curl -s "http://rss.accuweather.com/rss/liveweather_rss.asp?metric=1&locCode=EUR|CH|316622|ZURICH" | LANG=de_DE.UTF-8 sed -n '/Currently:/ s/.*: \(.*\): \([0-9]*\)\([C]\).*/\2°\3, \1/p'`  
 echo -ne '             \033[1;31m##################   \033[0m(90%)\r'  
 FORTUNE=`/usr/games/fortune -as | sed "s/^/    /"`  
 echo -ne '             \033[1;31m###################  \033[0m(95%)\r'  
 UPDATES=`apt-get --just-print upgrade 2>&1 | perl -ne 'if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "PROGRAM: $1 INSTALLED: $2 AVAILABLE: $3\n"}'`  
 WHOAMI=`whoami`  
 echo -ne '             \033[1;31m####################  \033[0m(100%)\r'  
 SSHTTY=`printenv SSH_TTY`  
 INSTALLED="Wed Mar 27 21:16:26 2013"  
 #sudo tune2fs -l $(df -P / | tail -n1 | cut -d' ' -f1 ) | grep 'Filesystem created:'  
 REBOOT=`cat /home/techii/bootcount.txt`  
 sleep 0.25  
 echo -ne '                                        \r'  
 echo -e "\n";  
 echo -e "\033[1;31m     _,met\$\$\$\$\$gg.";  
 echo -e "    ,g\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$P.";  
 echo -e "   ,g\$\$P\"\"    \"\"\"Y\$\$.\".";  
 echo -e "  ,\$\$P'       \`\$\$\$.";  
 echo -e " ',\$\$P    ,ggs.   \`\$\$b:";  
 echo -e " \`d\$\$'   ,\$P\"'  .  \$\$\$";  
 echo -e "  \$\$P   d\$'   ,  \$\$P";  
 echo -e "  \$\$:   \$\$.  -  ,d\$\$'   ";  
 echo -e "  \$\$;   Y\$b._  _,d\$P'  \033[0m   _,      _,   ,'\`.";  
 echo -e "\033[1;31m  Y\$\$.  \`.\`\"Y\$\$\$\$P\"'\033[0m     \`\$\$'     \`\$\$'   \`. ,'";  
 echo -e "\033[1;31m  \`\$\$b   \"-.__      \033[0m  \$\$      \$\$    \`'";  
 echo -e "\033[1;31m  \`Y\$\$b           \033[0m  \$\$      \$\$     _,      _";  
 echo -e "\033[1;31m   \`Y\$\$.        \033[0m ,d\$\$\$g\$\$ ,d\$\$\$b. \$\$,d\$\$\$b.\`\$\$' g\$\$\$\$\$b.\`\$\$,d\$\$b.";  
 echo -e "\033[1;31m    \`\$\$b.     \033[0m  ,\$P' \`\$\$ ,\$P' \`Y\$. \$\$\$' \`\$\$ \$\$ \"'  \`\$\$ \$\$\$' \`\$\$";  
 echo -e "\033[1;31m     \`Y\$\$b.   \033[0m   \$\$'  \$\$ \$\$'  \`\$\$ \$\$'  \$\$ \$\$ ,ggggg\$\$ \$\$'  \$\$";  
 echo -e "\033[1;31m      \`\"Y\$b._   \033[0m  \$\$   \$\$ \$\$ggggg\$\$ \$\$   \$\$ \$\$ ,\$P\"  \$\$ \$\$  \$\$";  
 echo -e "\033[1;31m        \`\"\"\"\"  \033[0m \$\$  ,\$\$ \$\$.    \$\$  ,\$P \$\$ \$\$'  ,\$\$ \$\$  \$\$";  
 echo -e "\033[0m             \`\$g. ,\$\$\$ \`\$\$._ _., \$\$ _,g\$P' \$\$ \`\$b. ,\$\$\$ \$\$  \$\$";  
 echo -e "              \`Y\$\$P'\$\$. \`Y\$\$\$\$P',\$\$\$\$P\"' ,\$\$. \`Y\$\$P'\$\$.\$\$. ,\$\$.";  
 echo -e "\n";  
 echo -e "  
                     \033[1;34m$HELLOSTRING $WHOAMI!\033[0;37m   
 \033[0;37m+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
 \033[0;37m+  \033[1;31mHostname....: \033[0m$HOSTN  
 \033[0;37m+  \033[1;31mDistro......: \033[0m$DISTRO1 $DISTRO2 $DISTRO3  
 \033[0;37m+  \033[1;31mKernel......: \033[0m$KERNEL  
 \033[0;37m+  \033[1;31mBoottime....: \033[0m$BOOTTIME  
 \033[0;37m+  \033[1;31mUptime......:\033[0m$UPTIME  
 \033[0;37m+  \033[1;31mInstalled...: \033[0m$INSTALLED  
 \033[0;37m+  \033[1;31mReboots.....: \033[0m$REBOOT  
 \033[0;37m+  \033[1;31mCPU.........: \033[0m$CPU  
 \033[0;37m+  \033[1;31mCPU Temp....: \033[0m$CPUTEMP  
 \033[0;37m+  \033[1;31mMemory......: \033[0m$MEMORY1 MB (Free) / $MEMORY2 MB (Total)  
 \033[0;37m+  \033[1;31mRAID.(Data).: \033[0m$RAID2 TB (Free) / $RAID1 TB (Total)  
 \033[0;37m+  \033[1;31mDisk.(OS)...: \033[0m$DISK2 GB (Free) / $DISK1 TB (Total)  
 \033[0;37m+  \033[1;31mLoad........: \033[0m$LOAD  
 \033[0;37m+  \033[1;31mProcesses...: \033[0m$PROC1 (Total) $PROC2 ($WHOAMI)  
 \033[0;37m+  \033[1;31mIP Address..: \033[0m$IP1 and $IP2  
 \033[0;37m+  \033[1;31mNetwork.....: \033[0m$NETWORK  
 \033[0;37m+  \033[1;31mSSH tty.....: \033[0m$SSHTTY  
 \033[0;37m+  \033[1;31mUsers.......: \033[0m$USERS  
 \033[0;37m+  \033[1;31mLast login..: \033[0m$LAST  
 \033[0;37m+  \033[1;31mWeather.....: \033[0m$WEATHER  
 \033[0;37m++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
 "  
 echo -e "  
 $FORTUNE  
 $UPDATES  
 ";  
 end=`date +%s.%N`  
 runtime=$(echo "$end - $start" | bc)  
 echo "Execution time was:" $runtime "seconds"  


Viel Spass beim MOTDEN!

Mittwoch, 17. April 2013

Linux Mint Debian - monit installieren und config einrichten

Monit 5.4 installieren


Da ich mich ein wenig mit monit beschäftigt habe möchte ich mit euch meine /etc/monit/monitrc Config Datei teilen und euch zeigen wie man monit auf Debian installiert. Mit monit lassen sich unix systeme überwachen und automatisierte Abläufe im Falle eines Fehlers generieren. Ist alles sehr einfach und mit dem Webserver auch ansprechend Präsentiert im Browser.

monit service manager - monit 5.4

Monit installieren


monit installiert man so:
 sudo apt-get install monit  

Danach /etc/monit/monitrc bearbeiten. Mit vi oder pico
 sudo pico /etc/monit/monitrc  
 sudo vi /etc/monit/monitrc  
aufrufen und editieren.

Beachtet das ihr ein Emailsystem eingerichtet haben müsst um die Alerts zu verschicken.

Monit einrichten

 Eigentlich sind nur die folgenden Einstellungen wichtig:
 set daemon 180                           # Monit überprüft alle 180 Sekunden  
 set mailserver localhost                 # Welchen Mailserver soll monit für die Alerts benutzen  
 set mail-format { from: user@domain.tld }# Welcher Absender haben die Emails von monit  
 set alert user@domain.tld                # An welche Adresse gehen die Alerts von monit  
Den Rest kann nach eingenem Geschmack angepasst werden. Die Programme die man überwachen will müssen natürlich vorher installiert werden ;)

Ich habe folgende Überwachungen eingerichtet:
  • localhost - misst CPU, RAM und Swap
  • CUPS - Druckserver
  • Exim4 - Mailserver
  • OpenVPN - VPN Server
  • CLAM - Anti Virus
  • SSH - Secure Shell Server, Netzwerkprotokoll für verschlüsselte Verbindungen
  • Fail2ban - SSH Sicherheitstool
  • Denyhosts - SSH Sicherheitstool
  • Samba - Samba Server, Datei- und Druckerserver
  • Cron - Cron-Daemon dient der zeitbasierten Ausführung von Prozessen
  • Minidlna - Multimediaserver
  • Webseite überwachen
Schaut einfach in der config nach wie ich das gemacht habe.

Meine monit config


 Meine Config sieht so aus:
 ###############################################################################  
 ## Monit control file  
 ###############################################################################  
 ##  
 ## Comments begin with a '#' and extend through the end of the line. Keywords  
 ## are case insensitive. All path's MUST BE FULLY QUALIFIED, starting with '/'.  
 ##  
 ## Below you will find examples of some frequently used statements. For   
 ## information about the control file and a complete list of statements and   
 ## options, please have a look in the Monit manual.  
 ##  
 ##  
 ###############################################################################  
 ## Global section  
 ###############################################################################  
 ##  
 ## Start Monit in the background (run as a daemon):  
 #  
  set daemon 120      # check services at 2-minute intervals  
 #  with start delay 240  # optional: delay the first check by 4-minutes (by   
 #              # default Monit check immediately after Monit start)  
 #  
 #  
 ## Set syslog logging with the 'daemon' facility. If the FACILITY option is  
 ## omitted, Monit will use 'user' facility by default. If you want to log to   
 ## a standalone log file instead, specify the full path to the log file  
 #  
 # set logfile syslog facility log_daemon              
  set logfile /var/log/monit.log  
 #  
 #  
 ## Set the location of the Monit id file which stores the unique id for the  
 ## Monit instance. The id is generated and stored on first Monit start. By   
 ## default the file is placed in $HOME/.monit.id.  
 #  
 # set idfile /var/.monit.id  
  set idfile /var/lib/monit/id  
 #  
 ## Set the location of the Monit state file which saves monitoring states  
 ## on each cycle. By default the file is placed in $HOME/.monit.state. If  
 ## the state file is stored on a persistent filesystem, Monit will recover  
 ## the monitoring state across reboots. If it is on temporary filesystem, the  
 ## state will be lost on reboot which may be convenient in some situations.  
 #  
  set statefile /var/lib/monit/state  
 #  
 ## Set the list of mail servers for alert delivery. Multiple servers may be   
 ## specified using a comma separator. If the first mail server fails, Monit   
 # will use the second mail server in the list and so on. By default Monit uses   
 # port 25 - it is possible to override this with the PORT option.  
 #  
  set mailserver localhost        # primary mailserver  
 #        backup.bar.baz port 10025, # backup mailserver on port 10025  
 #        localhost          # fallback relay  
 #  
 #  
 ## By default Monit will drop alert events if no mail servers are available.   
 ## If you want to keep the alerts for later delivery retry, you can use the   
 ## EVENTQUEUE statement. The base directory where undelivered alerts will be   
 ## stored is specified by the BASEDIR option. You can limit the maximal queue  
 ## size using the SLOTS option (if omitted, the queue is limited by space   
 ## available in the back end filesystem).  
 #  
  set eventqueue  
    basedir /var/lib/monit/events # set the base directory where events will be stored  
    slots 100           # optionally limit the queue size  
 #  
 #  
 ## Send status and events to M/Monit (for more informations about M/Monit   
 ## see http://mmonit.com/). By default Monit registers credentials with   
 ## M/Monit so M/Monit can smoothly communicate back to Monit and you don't  
 ## have to register Monit credentials manually in M/Monit. It is possible to  
 ## disable credential registration using the commented out option below.   
 ## Though, if safety is a concern we recommend instead using https when  
 ## communicating with M/Monit and send credentials encrypted.  
 #  
 # set mmonit http://monit:monit@192.168.1.10:8080/collector  
 #   # and register without credentials   # Don't register credentials  
 #  
 #  
 ## Monit by default uses the following format for alerts if the the mail-format  
 ## statement is missing::  
 ## --8<--  
 ## set mail-format {  
 ##   from: monit@$HOST  
 ##  subject: monit alert -- $EVENT $SERVICE  
 ##  message: $EVENT Service $SERVICE  
 ##         Date:    $DATE  
 ##         Action:   $ACTION  
 ##         Host:    $HOST  
 ##         Description: $DESCRIPTION  
 ##  
 ##      Your faithful employee,  
 ##      Monit  
 ## }  
 ## --8<--  
 ##  
 ## You can override this message format or parts of it, such as subject  
 ## or sender using the MAIL-FORMAT statement. Macros such as $DATE, etc.  
 ## are expanded at runtime. For example, to override the sender, use:  
 #  
  set mail-format { from: monit@domain.com }  
 #  
 #  
 ## You can set alert recipients whom will receive alerts if/when a   
 ## service defined in this file has errors. Alerts may be restricted on   
 ## events by using a filter as in the second example below.   
 #  
  set alert email@adress.com            # receive all alerts  
  set alert email@adress.com only on { timeout } # receive just service-  
 #                        # timeout alert  
 #  
 #  
 ## Monit has an embedded web server which can be used to view status of   
 ## services monitored and manage services from a web interface. See the  
 ## Monit Wiki if you want to enable SSL for the web server.   
 #  
  set httpd port 2342 and  
   use address localhost # only accept connection from localhost  
   allow localhost    # allow localhost to connect to the server and  
 #  allow admin:monit   # require user 'admin' with password 'monit'  
 #  allow @monit      # allow users of group 'monit' to connect (rw)  
 #  allow @users readonly # allow users of group 'users' to connect readonly  
 #  
 ###############################################################################  
 ## Services  
 ###############################################################################  
 ##  
 ## Check general system resources such as load average, cpu and memory  
 ## usage. Each test specifies a resource, conditions and the action to be  
 ## performed should a test fail.  
 #  
  check system localhost  
   if loadavg (1min) > 4 then alert  
   if loadavg (5min) > 2 then alert  
   if memory usage > 75% then alert  
   if swap usage > 25% then alert  
   if cpu usage (user) > 70% then alert  
   if cpu usage (system) > 30% then alert  
   if cpu usage (wait) > 20% then alert  
 #  
 #    
 ## Check if a file exists, checksum, permissions, uid and gid. In addition  
 ## to alert recipients in the global section, customized alert can be sent to   
 ## additional recipients by specifying a local alert handler. The service may   
 ## be grouped using the GROUP option. More than one group can be specified by  
 ## repeating the 'group name' statement.  
 #    
 # check file apache_bin with path /usr/local/apache/bin/httpd  
 #  if failed checksum and   
 #    expect the sum 8f7f419955cefa0b33a2ba316cba3659 then unmonitor  
 #  if failed permission 755 then unmonitor  
 #  if failed uid root then unmonitor  
 #  if failed gid root then unmonitor  
 #  alert security@foo.bar on {  
 #      checksum, permission, uid, gid, unmonitor  
 #    } with the mail-format { subject: Alarm! }  
 #  group server  
 #  
 #    
 ## Check that a process is running, in this case Apache, and that it respond  
 ## to HTTP and HTTPS requests. Check its resource usage such as cpu and memory,  
 ## and number of children. If the process is not running, Monit will restart   
 ## it by default. In case the service is restarted very often and the   
 ## problem remains, it is possible to disable monitoring using the TIMEOUT  
 ## statement. This service depends on another service (apache_bin) which  
 ## is defined above.  
 #    
 # check process apache with pidfile /usr/local/apache/logs/httpd.pid  
 #  start program = "/etc/init.d/httpd start" with timeout 60 seconds  
 #  stop program = "/etc/init.d/httpd stop"  
 #  if cpu > 60% for 2 cycles then alert  
 #  if cpu > 80% for 5 cycles then restart  
 #  if totalmem > 200.0 MB for 5 cycles then restart  
 #  if children > 250 then restart  
 #  if loadavg(5min) greater than 10 for 8 cycles then stop  
 #  if failed host www.tildeslash.com port 80 protocol http   
 #    and request "/somefile.html"  
 #    then restart  
 #  if failed port 443 type tcpssl protocol http  
 #    with timeout 15 seconds  
 #    then restart  
 #  if 3 restarts within 5 cycles then timeout  
 #  depends on apache_bin  
 #  group server  
 #    
 #    
 # CUPSD  
  check process cupsd with pidfile /var/run/cups/cupsd.pid  
    group lpadmin  
    start program = "/etc/init.d/cups start"  
    stop program = "/etc/init.d/cups stop"  
    if failed unixsocket /var/run/cups/cups.sock then restart  
    if 5 restarts within 5 cycles then timeout  
    depends on cupsd_bin  
    depends on cupsd_rc  
  check file cupsd_bin with path /usr/sbin/cupsd  
    group lpadmin  
    if failed checksum then unmonitor  
    if failed permission 755 then unmonitor  
    if failed uid root then unmonitor  
    if failed gid root then unmonitor  
  check file cupsd_rc with path /etc/init.d/cups  
    group lpadmin  
    if failed checksum then unmonitor  
    if failed permission 755 then unmonitor  
    if failed uid root then unmonitor  
    if failed gid root then unmonitor  
 #
 # exim mail daemon  
 #
 check process exim4  
     pidfile /var/run/exim4/exim.pid  
     group mail  
     start program = "/etc/init.d/exim4 start"  
     stop program = "/etc/init.d/exim4 stop"  
     if failed port 25 proto smtp then restart  
     if 5 restarts within 5 cycles then timeout  
     depends on clamd  
 #
 # openvpn
 #
 check process openvpn with pidfile /var/run/openvpn.server.pid  
      group system      
      start program = "/etc/init.d/openvpn start"  
     stop program = "/etc/init.d/openvpn stop"  
     if failed host 192.168.1.4 port 1194 type udp then restart  
     group net  
     depends openvpn_init  
     depends openvpn_bin  
  if 5 restarts within 5 cycles then timeout  
 check file openvpn_init with path /etc/init.d/openvpn  
     group net  
 check file openvpn_bin with path /usr/sbin/openvpn  
     group net  
 #
 # clamav
 #
 check process clamd with pidfile /var/run/clamav/clamd.pid  
  group virus  
  start program = "/etc/init.d/clamav-daemon start"  
  stop program = "/etc/init.d/clamav-daemon stop"  
  if 5 restarts within 5 cycles then timeout  
  depends on clamavd_bin  
  depends on clamavd_rc  
 check process freshclam with pidfile /var/run/clamav/freshclam.pid  
  group virus  
  start program = "/etc/init.d/clamav-freshclam start"  
  stop program = "/etc/init.d/clamav-freshclam stop"  
  if 5 restarts within 5 cycles then timeout  
  depends on clamd  
  depends on clamavd_bin  
  depends on clamavd_rc  
 check file clamavd_bin with path /usr/sbin/clamd  
  group virus  
  if failed checksum then unmonitor  
  if failed permission 755 then unmonitor  
  if failed uid root then unmonitor  
  if failed gid root then unmonitor  
 check file clamavd_rc with path /etc/init.d/clamav-daemon  
  group virus  
  if failed checksum then unmonitor  
  if failed permission 755 then unmonitor  
  if failed uid root then unmonitor  
  if failed gid root then unmonitor  
 #
 # fail2ban
 #
 check process fail2ban with pidfile /var/run/fail2ban/fail2ban.pid  
     start program = "/etc/init.d/fail2ban start"  
     stop program = "/etc/init.d/fail2ban stop"  
     if failed unixsocket /var/run/fail2ban/fail2ban.sock then restart  
     if 5 restarts within 5 cycles then timeout  
 #
 # minidlna
 #
 check process minidlna with pidfile /var/run/minidlna/minidlna.pid  
       start program "/etc/init.d/minidlna start"  
   stop program "/etc/init.d/minidlna stop"  
   if 5 restarts within 5 cycles then timeout  
  check process sshd with pidfile /var/run/sshd.pid         
   start program "/etc/init.d/ssh start"           
   stop program "/etc/init.d/ssh stop"             
   if failed port 22 protocol ssh then restart          
   if 5 restarts within 5 cycles then timeout          
 #
 # samba
 #
 check process smbd with pidfile /var/run/samba/smbd.pid  
   group samba  
   start program = "/etc/init.d/samba start"  
   stop program = "/etc/init.d/samba stop"  
   if failed host 192.168.1.4 port 139 type TCP then restart  
   if 5 restarts within 5 cycles then timeout  
   depends on smbd_bin  
  check file smbd_bin with path /usr/sbin/smbd  
   group samba  
   if failed checksum then unmonitor  
   if failed permission 755 then unmonitor  
   if failed uid root then unmonitor  
   if failed gid root then unmonitor  
 #
 # syslog
 #
  check file syslogd_file with path /var/log/syslog  
   if timestamp > 65 minutes then alert  
 #
 # cron
 #
 check process cron with pidfile /var/run/crond.pid  
   group system  
   start program = "/etc/init.d/cron start"  
   stop program = "/etc/init.d/cron stop"  
   if 5 restarts within 5 cycles then timeout  
   depends on cron_rc  
  check file cron_rc with path /etc/init.d/cron  
   group system  
   if failed checksum then unmonitor  
   if failed permission 755 then unmonitor  
   if failed uid root then unmonitor  
   if failed gid root then unmonitor  
 #
 # check website
 #
 check host the-tech-blog-blogger.blogspot.com with address the-tech-blog-blogger.blogspot.com  
 if failed url http://the-tech-blog-blogger.blogspot.ch/  
 timeout 30 seconds for 3 cycles then alert  
 #
 # denyhosts
 #
 check process denyhosts with pidfile /var/run/denyhosts.pid  
   start program = "/etc/init.d/denyhosts start"  
   stop program = "/etc/init.d/denyhosts stop"  
   if cpu > 90% for 2 cycles then alert  
 check file denyhosts.conf  
   with path /etc/denyhosts.conf  
   if changed checksum then alert  
 ## Check filesystem permissions, uid, gid, space and inode usage. Other services,  
 ## such as databases, may depend on this resource and an automatically graceful  
 ## stop may be cascaded to them before the filesystem will become full and data  
 ## lost.  
 #  
 # check filesystem datafs with path /dev/sdb1  
 #  start program = "/bin/mount /data"  
 #  stop program = "/bin/umount /data"  
 #  if failed permission 660 then unmonitor  
 #  if failed uid root then unmonitor  
 #  if failed gid disk then unmonitor  
 #  if space usage > 80% for 5 times within 15 cycles then alert  
 #  if space usage > 99% then stop  
 #  if inode usage > 30000 then alert  
 #  if inode usage > 99% then stop  
 #  group server  
 #  
 #  
 ## Check a file's timestamp. In this example, we test if a file is older   
 ## than 15 minutes and assume something is wrong if its not updated. Also,  
 ## if the file size exceed a given limit, execute a script  
 #  
 # check file database with path /data/mydatabase.db  
 #  if failed permission 700 then alert  
 #  if failed uid data then alert  
 #  if failed gid data then alert  
 #  if timestamp > 15 minutes then alert  
 #  if size > 100 MB then exec "/my/cleanup/script" as uid dba and gid dba  
 #  
 #  
 ## Check directory permission, uid and gid. An event is triggered if the   
 ## directory does not belong to the user with uid 0 and gid 0. In addition,   
 ## the permissions have to match the octal description of 755 (see chmod(1)).  
 #  
 # check directory bin with path /bin  
 #  if failed permission 755 then unmonitor  
 #  if failed uid 0 then unmonitor  
 #  if failed gid 0 then unmonitor  
 #  
 #  
 ## Check a remote host availability by issuing a ping test and check the   
 ## content of a response from a web server. Up to three pings are sent and   
 ## connection to a port and an application level network check is performed.  
 #  
 # check host myserver with address 192.168.1.1  
 #  if failed icmp type echo count 3 with timeout 3 seconds then alert  
 #  if failed port 3306 protocol mysql with timeout 15 seconds then alert  
 #  if failed url http://user:password@www.foo.bar:8080/?querystring  
 #    and content == 'action="j_security_check"'  
 #    then alert  
 #  
 #  
 ###############################################################################  
 ## Includes  
 ###############################################################################  
 ##  
 ## It is possible to include additional configuration parts from other files or  
 ## directories.  
 #  
   include /etc/monit/conf.d/*  
 #  

Danach kann die Überwachungsseite mit http://localhost:2342 aufgerufen werden.
Wer die Seite auch aus dem LAN oder WAN ansehen will, muss die Config anpassen.
Und zwar nach diesem Eintrag:
 set httpd port 2342 and   
   use address localhost # only accept connection from localhost   
   allow localhost  # allow localhost to connect to the server and   

Weitere Einstellungsbeispiele findet ihr auch hier:
http://mmonit.com/wiki/Monit/ConfigurationExamples

Viel spass beim monit einrichten!

Dienstag, 19. Februar 2013

Die besten Cydia Download Seiten des Jahres 2013


Hier ist sie nun wieder!
Wie schon im letzten Jahr auch für das Jahr 2013 eine Liste mit den besten Cydia Ressourcen zum Download von Apps für Apple Geräte mit Jailbreak. Nach dem es nun auch möglich ist die neueste IOS Version zu knacken, auch nach dem 6.1.2  Update von Heute, habe ich gedacht es ist Zeit für eine neue aktuellere Liste. Darum habe ich euch die 14 besten Cydia Repos für das Iphone und den Ipad herausgesucht.

Zuerst braucht ihr aber mal ein Tool für den Jailbreak, und dann könnt ihr den Cydia App Store installieren. Und für diesen Store gibt es eine Menge Quellen für gute Apps. Ich werde euch die Besten Seiten hier vorstellen.

Wie immer einfach auf:
Verwalten > Quellen > Bearbeiten > Hinzufügen
dort könnt ihr dann verschiedene URLs zu Cydia Quellen angeben. 



Cydia Quellen 2013


Sinful Iphone












http://www.sinfuliphonerepo.com/




Big Boss







http://thebigboss.org/hosting-repository-cydia




Bite your Apple










repo.biteyourapple.net




Insanelyi








http://repo.insanelyi.com/




Hackulous











HACKULOUS IS DOWN!

http://cydia.hackulo.us/




Hackstore









http://www.myrepospace.com/profile/Hackstore




Hack your Iphone







http://repo.hackyouriphone.org/




XSellize










http://cydia.xsellize.com/




Ihacksrepo










http://ihacksrepo.com/




RipDev









http://i.ripdev.com/



ModMyi









http://apt.modmyi.com/




MyRepospace








http://iexploit.myrepospace.com/




Pwncenter








http://apt.pwncentre.com/




ICauseFX








http://repo.icausefx.com/




Wenn ihr noch weitere Cydia Quellen habt, lasst es mich wissen.

Hier gibt es noch weiter Quellen die nicht in dieser Liste sind:
http://www.appsafari.com/full-list-of-installerapp-sources/

Viel spass mit euren Iphones und Ipads!