[Sammelthread] SSS | Shell Scripte Sharing

NiclasM

Enthusiast
Thread Starter
Mitglied seit
06.02.2007
Beiträge
4.331
Ort
Dortmund
Hey Linux User dadraussen.

Viele haben sich bestimmt schonmal selbst Scripte gebastelt um sich altägliche dinge automatisieren zu lassen. Auch ich. Und ich finde es eigentlich eine gute Idee wenn wir unsere Scripte untereinander tauschen (sharen ;) ). Evtl. mit Script erklärung oder Vorschlägen zur Verbesserung und Meinungsaustausch.

Könnt ja auch einfach eure Meinung zu dem Thread hier wiedergeben.

Ich fang dann mal an und ich denke wir werden das nach und nach Sammeln und ich kann dann im 1. Post alles nach und nach zusammenfassen.

Ich mach dann mal den Anfang mit einem Script zum automatischen installieren von Firefox und Thunderbird. Da ich Debian User bin ist es bei jedem neuen System immer etwas lästig und so gehts relativ schnell.

#!/bin/sh
# Install Script v1.0
# Please use as User not root
# This script installs Thunderbird and Firefox with latest updates into your home dict
# Creater : Niclas Müller
# Date : 02. Apr
# Used Dist : Debian 5.0.3
# EMail : psyeagel@googlemail.com
# Have fun!

cd /tmp
# Firefox Download
wget http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6/linux-i686/de/firefox-3.6.tar.bz2
# Thunderbird Download
wget http://releases.mozilla.org/pub/moz...3.0.4/linux-i686/de/thunderbird-3.0.4.tar.bz2
tar xfji firefox-3.6.tar.bz2
tar xfji thunderbird-3.0.4.tar.bz2
rm firefox-3.6.tar.bz2
rm thunderbird-3.0.4.tar.bz2
mv /tmp/firefox ~/.firefox-app/
mv /tmp/thunderbird ~/.thunderbird-app/
ln -s ~/.firefox-app/firefox ~/Desktop/Mozilla\ Firefox
ln -s ~/.thunderbird-app/thunderbird ~/Desktop/Mozilla\ Thunderbird
cd ~/.firefox-app
./updater ~/.firefox-app
cd ~/.thunderbird-app/
./updater ~/.thunderbird-app/
echo "Firefox & Thunderbird installation success with update's !"

Was mir persönlich darin fehlt aber wo ich nicht weiter Weiß, ich würd liebend gern ein Icon direkt mit der Verknüpfung auf den Desktop plazieren und wie kann ich umgehen ( einbau bar im Script ) dass ich jedes mal gefragt werde ob ich die Datei anzeigen lassen möchte oder Starten ?


RAR Packen + FTP Hochladen
Muss noch Bearbeitet Werden zum benutzen.
User, Passwort und FTP Server müssen eingetragen werden.
Ausserdem werden die Paktet ncftp und rar benötigt.

Packt Ordner Doppelt und Splittet Sie in 100 MB Parts. Perfekt für OneClick Hoster da diese Oft MD5 Hasher benutzen um nach "Doppelten Datein" zu suchen und dann auchmal schnell Datein Ablehnen.

#!/bin/sh
# Creater : Niclas Müller
# Date : 02. Apr
# Used Dist : Debian 5.0.3
# EMail : psyeagel@googlemail.com
# Have fun!

$ordner
$rar1
datum=$(date +%T)
monat=$(date +%T+%Y)
echo "Orner Eingeben"
read ordner
rar a -v52400 -m0 -rv4 /opt/tmp/$datum".rar" $ordner
mkdir /opt/ready/$monat
rar a -v102410 -m0 -rv4 /opt/ready/$monat/$monat.* /opt/tmp/$datum.*
echo $ordner >> /opt/links.txt
echo "- - -" >> /opt/links.txt
ls /opt/ready/$monat >> /opt/links.txt
echo "-------------------" >> /opt/links.txt
echo "-------------------" >> /opt/links.txt
rm /opt/tmp/$datum.*
ncftpput -u USERNAME -p PASSWORT FTP-DOMAIN/IP / /opt/ready/$monat/$monat.*
rm -R /opt/ready/$monat/$monat.*
rm -R /opt/ready/$monat






##################### Wie nutze ich Shell Scripte ? #####################

- Du gehst in den Terminal deines Systems ( z.B. für GNOME -> Anwendungen -> Zubehör -> Terminal

- Eine schwarze Console öffnet sich.
- Dort befindest du dich normalerweise direkt in einem Home Verzeichnis.
- nano <script-name>.sh
- Dort koppierst du dann den Text des jeweiles Script's rein
- STRG + X zum schließen Drücken
- mit "y" antworten auf die Frage ob du die Datei Verändern / schreiben möchtest
- sh <script-name>.sh # Script starten

Das wars !
 
Zuletzt bearbeitet:
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Eine Frage, wofür brauchst du das erste Skript?
Per Paketmanager geht das doch viel einfacher...

Ansonsten, nett gemacht.
 
In Debian kannst du kein apt-get install firefox machen , da soweit ich weiß es vor ein paar Jahren mal Streit um den Namen o.s.ä. gab und deshalb FIrefox in Debian nurnoch als Iceweasel und Thunderbird als icedove bekannst ist. Und das nervt mich aber das größte was mich nervt ist , dass nurnoch für icewasel 2.0 Sicherheits Updates auskommen und keine Normalen ( Ist man ja aber von Debian gewohnt ) und da ich diese beiden trozdem auf dem Aktuellen Stand haben möchte, ist sowas schon nützlich...

In Ubuntu ist das was anderes...
 
Kann man da nicht einfach andere Quellen einbinden, die das dann anbieten?

Gut, dass ich mit Archlinux keine Probleme da hab. :shot:
 
Nicht dass ich wüsste...

Wie gesagt, dem einen Hilfts, dem andern halt weniger ;)
 
Was spricht gegen Iceweasel? Die Version in Squeeze ist doch ziemlich aktuell und wird gepatcht?
 
Squeeze ist aber nochnicht Offiziell raus und ich verwende lieber eine Stabile Version ( Lenny ) und besorge mir dann die Programm lieber Aktuell die ich auch nur wirklich brauche...
 
Naja, was bringt dir ne Stable-markierte Release, wenn du doch wieder an der Paketverwaltung vorbei Sachen installierst, die dann nicht durch Patches und Co abgedeckt werden?
 
Firefox & Thunderbird kann ich ohne Probleme Updaten und Co gibts dabei nicht...
 
Hey cooler Thread, da will ich doch auch gleich mal was zu beisteuern:
Code:
#!/bin/bash
# Tiny Control Script to adjust output volume of both devices PCM and Master
amixer set Master playback $1
amixer set PCM playback $1
Designed für: Ubuntu 9.10

Das steuert die Laustärke für beide Devices, Master und PCM - mir ist es nämlich oft passiert, dass ich per GUI nicht mehr lauter drehen konnte, weil der PCM-Regler zu weit unten war.

Der eigentlich praktische Nutzen kommt aber erst, wenn man das Script über Tastenkombinationen aufruft (gnome-keybinding-properties, s. Anhang). Und ja, ihr habt es erraten: vollen Sinn ergibt es nur, wenn man keine Multimedia-Keys auf der Tastatur hat. ;)


Jetzt was ganz andres; das folgende Script komprimiert die Dateien des übergebenen Verzeichnisses in ein 7z-Archiv:
Code:
#!/bin/sh
# -xv
#
# compress_new_files v0.1
# (c) Nicolas Krzywinski
#
# Created:        2009-10-09 by Nicolas Krzywinski
# Description:    Compresses given files to existing or non-existing backup archive
# Last Modified:  
# Modify Reason:	

# PART ZERO: Explanations
# - Settings:           
# - Script Arguments:  
# - Script Behaviour:   


# PART ONE: Settings
p7z_cmd="7z a -mx=9 -y"
archive="backuparchive.7z"
action=false
delete=false
logging=true


# PART TWO: Fire
input=${1/%\//}         # clean trailing slash
path=${input%/*}        # extract path part of input
file=${input##*/}       # extract file part of input

if [ "$file" != "$archive" ]
then
	`$p7z_cmd "$path/$archive" "$input" > /dev/null`
	if $delete
	then `rm -R "$input"`
	fi
	action=true
fi



# PART THREE: Logging & Exit

# Log
if $logging && $action
then
	echo `date --iso-8601=minutes`": Added '$input' to archive '$archive'"		>> $0.log
fi

# Clean up log
tail -n 30 $0.log > $0.log.tmp
rm $0.log
mv $0.log.tmp $0.log

# Exit
exit 0
Der Clou entsteht dann im Zusammenspiel mit Incron. Incron überwacht Verzeichnisse auf Dateisystem-Events. Beim Erstellen einer Datei (auch beim Hinkopieren) wird z. B. IN_CREATE ausgelöst.

Bei folgender Konfiguration von Incron werden also alle Dateien die in Verzeichnis /home/automagicbackup gelegt werden, in /home/automagicbackup/backuparchive.7z hinzugefügt (und in Script einstellbar anschließend gelöscht):
Code:
/home/automagicbackup IN_CREATE /usr/scripts/compress_new_files $@/$#
Achtung: in Incron-Konfigs dürfen keine Kommentare und keine Tabs sein, ansonsten tut das nicht!


Zwei Nautilus-Script'chen habe ich noch auf meiner Webseite liegen: nskComputing.de
Dort füge ich auch ab und zu mal noch Weitere hinzu..
 

Anhänge

  • Bildschirmfoto-Individuelle Tastenkombination.png
    Bildschirmfoto-Individuelle Tastenkombination.png
    3,5 KB · Aufrufe: 39
  • Bildschirmfoto-Individuelle Tastenkombination-1.png
    Bildschirmfoto-Individuelle Tastenkombination-1.png
    3,5 KB · Aufrufe: 26
Ach noch was Praktisches grad gefunden, das entpackt alle Archivtypen die es kennt (konfiguriert da mit "-e ENDUNG" nur das rein was euer System kann!):
Code:
#!/bin/sh
# -xv
#
# extract_archives v0.1.1
# (c) Nicolas Krzywinski
#
# Created:        2009-09-01 by Nicolas Krzywinski
# Description:    Extracts all compatible archives in the given directory
# Last Modified:  2009-09-10
# Modify Reason:	Included file list (extracted archives) in log

# PART ZERO: Explanations
# - Settings:           Each setting consist of a pair of a file (archive) extension list and
#									corresponding extract command
# - Script Arguments:   Arg1 = Directory to search for archive files (currently no recursive support)
# - Script Behaviour:   Script logic searches in Arg1 for known archive extensions and tries to
#									extract them


# PART ONE: Settings
p7z_cmd="7z x -y -o"
p7z_ext="-e 7z -e rar -e zip -e cab -e arj -e gzip -e bzip2 -e tar -e cpio -e rpm -e deb"
count=0
xlist=""
logging=true


# PART TWO: Get Archives from Directory And Process Them
for file in `ls "$1" | grep $p7z_ext`
do
	# Extract each found archive file
	`$p7z_cmd"$1" "$1/$file" > /dev/null`
	let count++
	xlist+=", "$file
done


# PART THREE: Logging & Exit

# Log
if $logging
then
	if [ $count > 0 ]
  	then
		echo `date --iso-8601=minutes`": Extracted $count archives ($xlist)"		>> $0.log
  	else
		echo `date --iso-8601=minutes`": No archives found in '$1'"					>> $0.log
	fi
fi

# Clean up log
tail -n 30 $0.log > $0.log.tmp
rm $0.log
mv $0.log.tmp $0.log

# Exit
if [ $count > 0 ]
   then exit 0
   else exit 1
fi

Btw.: für dieses und das Script oben muss 7z natürlich installiert sein. Ansonsten könnt ihr den Packbefehl auch anpassen.
 
Zum Thema 7z und Backup ist vielleicht noch Folgendes interessant:

DO NOT USE the 7-zip format for backup purpose on Linux/Unix
because :
- 7-zip does not store the owner/group of the file.
Siehe man 7za.

Ein bisschen hab ich selber auch noch:

Code:
#!/bin/bash

STATE=$(cat /sys/class/power_supply/BAT0/status)
RATE=$(cat /sys/class/power_supply/BAT0/current_now)
LASTFULL=$(cat /sys/class/power_supply/BAT0/charge_full)
CAPACITY=$(cat /sys/class/power_supply/BAT0/charge_now)

PERCENT=$(echo "scale=2; $CAPACITY / $LASTFULL * 100" | bc -l)

if [ "$STATE" = "Charging" ]; then
  echo -en "Charging, $PERCENT%"
else
  if [ "$STATE" = "Discharging" ]; then
    x=`echo "scale=2; $CAPACITY / $RATE" | bc`
    h=`echo $x | cut -d"." -f1`
    if [ -z "$h" ]; then
      h="0"
    fi
    m=`echo $x | cut -d"." -f2`
    if [ -z "$m" ]; then
      m="0"
    fi
    m=`echo "scale=2; $m * 60 / 100" | bc | cut -d"." -f1`
    printf "%d:%02dh, $PERCENT%%" $h $m
  else
    echo -n "On AC"
  fi
fi
Gibt den Ladestand des Akkus aus und außerdem, ob er lädt, entlädt oder voll ist. Funktioniert aber erst ab... weiß garnicht. Bei Debian Lenny sollte es nicht funktionieren, weil da die Akku-Infos noch unter /proc zu finden sind. Ist auch eigentlich nicht ganz von mir, sondern aus irgendeinem Blog, aber ich habe es auf /sys angepasst.

Und noch was Praktisches:
Code:
#!/bin/bash
w3m -cols $(tput cols) -dump "http://pda.leo.org/ende?search=$(echo $@ | sed -e 's/\ /\+/g')" | \
	grep '^\(│\|├\|└\|┌\)'
Englisch<->Deutsch-Übersetzung in der Shell.
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh