Samba Server installieren
Auf der SuSE DVD sind alle notwendigen Daten vorhanden um einen Samba Server komplett zu installieren. Es ist darauf zu achten dass bei der installation die automatische konfiguration abgeschalten wird und auch root ein seperates passwort erhällt.
Bei der auswahl der Software wir eine rein textbasierendes Server System gewählt. Folgende Pakete sollten im Bereich Software zusätzlich ausgewählt werden:
Samba User einrichten
Linux User anlegen:
Damit ein Samba User eingerichtet werden kann muss dieser als Linux User angelegt sein.
kommando:
Jetzt braucht der user noch ein Passwort:
Danach wird man zur zweimaligen eingabe eines Passwortes aufgefordert.
Verzeichniss Berechtigung anpassen:
Je nach anforderung sollten die Berechtigungen für das homeverzeichniss angepasst werden. Soll z.B. nur der user selbst sein Verzeichniss öffnen dürfen so muss die Berechtigung 700 gesetzt werden:
Verzeichniss im Netz freigeben
Damit das Verzeichniss im Netz "sichtbar" ist muss es entsprechend freigegeben werden. Dies wird am einfachsten im YaST Kontrollzentrum gemacht. Als root in der Konsole "yast" eingeben.
Unter dem Menüpunkt "Netzwerkdienste" finde man "Samba-Server"
Hier das entsprechende Verzeichniss anlegen und aktivieren.
Samba Passwort vergeben
Damit ein User sich einloggen kann muss ein Samba Passwort vergeben werden:
Danach wird man zur zweimaligen eingabe eines Passwortes aufgefordert.
Nützliches
Im Verzeichnis /etc/samba/ befinden sich einige Dateien, u.a. eine smb.conf. Hier kann man diverse funktionalitäten einstellen. Sehr nützlich sind vor allem die Rechte die vergeben werden sollen wenn Verzeichnisse oder Dateien die auf dem Server abgelegt werden. So sorgt follgendes kommando dafür das alle Verzeichnisse die angelegt werden die Berechtigung 700 haben:
In dieser Datei werden die globalen Einstellung sowie die für jeden User gemacht.
Disk quota
Die maximale grösse des Homeverzeichnisses kann durch Disk quota geregelt werden. Mit dem kommand "quota" können diese ausgelesen werden. mit edquota (edit quota) werden diese eingestellt. Sollte das kommando und die man pages nicht verfügbar sein, so muss quota erst installiert werden. Dies geschieht am besten mit YaST.
|
Das Datei System und seine Berechtigungen
Mit den Komando ls (list) wird der Inhalt des Verzeichnisses in dem man sich befindet angezeigt.
Vor jeder Datei oder Verzeichniss sind 10 bits die eine aussage über die Berechtigung machen. Danach wird der eigentümer und gruppe angezeigt gefolgt von der grösse und dem datum sowie den namen der Datei oder des Verzeichnisses.
drwxr-xr-x 2 matthias matthias 4096 2010-05-08 20:31 Vorlagen/
-rw------- 1 root root 2616 2010-05-08 22:22 dead.letter
Die Berechtigungsbits
lrwxrwxrwx 1 root root 14 2010-05-08 20:58 live -> /home/matthias/
Das erste bit von links zeigt an um was für einen Dateityp es sich handelt.
die Bits 2 - 4 von links stehen für die Berechtigungen die der Inhaber hat
die Bits 5 - 7 von links stehen für die Berechtigungen die die Gruppe hat
die Bits 8-10 von links stehen für die Berechtigungen die alle anderen haben, vorausgesetzt diese haben überhaupt die Berechtigung dieses Verzeichniss zu öffnen.
Ändern der Rechte
Der inhaber der datei sowie root haben das recht die rechte zu verändern. Dies geschied mit dem kommando chmod - change permissions of a file. Das komando:
chmod 600
ändert die Berechtigung zu -rw-------
chmod 755
würde die Berechtigung zu -rwxr-xr-x ändern.
Mit chown (change owner) wird der Eigentümer, mit chgrp (change Group) die Gruppe geändert.
|
Das kommando cp
cp - steht für copy und kopiert dateien oder verzeichnisse.
Das komando
[matthias@localhost Vorlagen]$ cp mh1 mh1-$(date "+%d-%m-%Y-%H-%M-%S")
hat zur folge das die datei
-rwxrwxrwx 1 matthias matthias 0 2010-05-09 00:19 mh1*
zur datei
-rwxr-xr-x 1 matthias matthias 0 2010-05-09 00:21 mh1-09-05-2010-00-21-21*
kopiert wird.
In diesem Fall wird das aktuelle Datum in der Form Tag,Monat,Jahr sowie die Uhrzeit Stunde,Minute,Sekunde angefügt. Dies ist vor allem bei wiederkehrenden kommandos in Skripten wertvoll. Bei einer Datensicherung wüsste man sofort von wann diese ist, ausserdem verhindert der anhang das es nicht zum ersetzen der datei, sondern eine weitere angelegt wird.
|
VGA - Parameter
Diese VGA Parameter sind wichtig als bootoption in der GRUB konfiguration. Das konfigurationsfile befindet sich normalerweise in /boot/grub/
-rw-r--r-- 1 root root 1228 2010-05-08 22:26 menu.lst
title linux
kernel (hd0,0)/boot/vmlinuz BOOT_IMAGE=linux root=UUID=c765f8b4-1208-4853-b265-f4def80d6bf5 resume=UUID=151dc408-c27f-43db-b9c0-187f189bbc26 splash=silent vga=788
initrd (hd0,0)/boot/initrd.img
Folgende Paramter sind zulässig:
Farbtiefe |
640x480 |
800x600 |
1024x768 |
1280x1024 |
1440x900 |
1600x1200 |
8 bit |
769 |
771 |
773 |
775 |
864 |
796 |
16 bit |
785 |
788 |
791 |
794 |
866 |
798 |
24 bit |
786 |
789 |
792 |
795 |
867 |
799 |
es können die dezimal oder die hex werte genommen werden, das macht keinen Unterschied.
auch möglich ist: vga=ask
4:3 |
16:10 |
800x600 |
1280x800 |
1024x768 |
1440x900 |
1400x1050 |
1680x1050 |
1600x1200 |
1920x1200 |
2048x1536 |
|
|
Farbiger Terminal. Prompts für user:~$ und root:# :
manuelle eingabe in der Konsole zur temporären farbänderung (geht auch als user, muss kein root sein):
echo -e "\033[0;1;32m"
Das -e ist notwendig um die Escape Sequenz für die farbige Ausgabe \033[ zu erkennen. Lässt man das -e weg wird einfach der Text \033[0;1;32m ausgegeben.
Wobei das m als ende notwendig ist.
Den aktuellen Parameter von PS1 kann man wie folgt auslesen:
[matthias@localhost ~]$ echo $PS1
[\u@\h \W]\$
[matthias@localhost ~]$
eine dauerhafte
bash: PS1="\[\033[34m\]\u@\h \w \$\\033[39m\] "
sorgt dafür das der Prombt blau ist, der text nach dem Prombt aber weiss
ich hatte versehentlich das kommando so eingegeben:
bash: PS1="\[\033[34m\]\u@\h \033[39m\] "
das hat auch funktioniert. aus irgendeinem grund erschien der Prompt dann ohne dem "ende Prombt"
matthias@mh-server _
wenn man also in der letzten Sequenz \033[39m\] " ein \033[39m\ M] " eingibt erscheint der Prombt so:
matthias@mh-server M _ allerdings war das M weiss!
schreibt man das M dagegen hier rein bash: PS1="\[\033[34m\]\u@\h M\033[39m\] " Das ergebniss ist dann das gleiche allerdings ist das M dann blau.
matthias@mh-server M _
nach der ersten Sequenz wird der Prombt festgelegt, \u zeigt den user an, dann kommt ein @, dann \h für host, zusammen kommt damit die ausgabe matthias@mh-server zustande. Hängt man ein \d mit rein erscheint auch das Datum im prombt :-)
\l stehrt für Terminal (tty1)
\s zeigt die bash an
\t zeigt die Zeit
\v zeigt die Version
\w zeigt ein "~" ?!?
Das funktioniert nicht als bootoption :-(
Um die einstellung permanent für einen User einzustellen muss das obige kommando in die .bashrc eingetragen werden. Diese befindet sich bei SuSE im Pfad /home/matthias. Ist anzunehmen dass jeder user eine eigene hat.
Das betrfft die tcsh nicht!
Farbige Prompts am Terminal können einen vor unangenehmen oder katastrophalen Fehlern bewahren, falls man als root # eine Aufgabe durchführt, die man als user~$ machen wollte. Sie können auch eingesetzt werden, um als Lesezeichen für alle 100 Zeilen zu fungieren.
In den Grundeinstellungen besitzen die Prompts für user~$ und root# den gleichen Farbton, aber es ist einfach die Farben zu ändern.
Die Grundfarben sind:
(die Syntax ist 00;XX)
[00;30] Schwarz
[00;31] Rot
[00;32] Grün
[00;33] Gelb
[00;34] Blau
[00;35] Magenta
[00;36] Cyan
[00;37] Weiß
[Man ersetzt [00;XX] mit [01;XX] um eine Farbvariation zu erhalten].
Änderung der Farbe für den Prompt des User ~$:
Als $user mit einem Texteditor:
$ <editor> ~/.bashrc
gilt auch für Mandriva
In der Zeile 39 wird das Kommentarzeichen entfernt und sie sieht so aus:
force_color_prompt=yes
In der Zeile 53 wird dort, wo zum Beispiel 01;32m steht auf den gewünschten Farbwert gesetzt.
Im Beispiel wird der farbige Prompt für user~:$ auf Cyan [01;36m\] gesetzt. Dies muss an drei Stellen mit dieser Syntax erfolgen:
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;36m\]\u@\h\[\033[01;36m\]:\[\033[01;36m\]\w\[\033[00m\]\$ '
Die neue Farbe existiert nach Öffnen eines neuen Terminals.
Änderung der Farbe für den Prompt von root#:
sux
<editor> /root/.bashrc
In der Zeile 39 wird das Kommentarzeichen entfernt und sie sieht so aus:
force_color_prompt=yes
In der Zeile 53 wird dort, wo zum Beispiel 01;32m steht auf den gewünschten Farbwert gesetzt.
Im Beispiel wird der farbige Prompt für root:# auf Rot [01;31m\] gesetzt. Dies muss an drei Stellen mit dieser Syntax erfolgen:
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[01:31m\]:\[\033[01;31m\]\w\[\033[00m\]\$ '
Die neue Farbe existiert nach Öffnen eines neuen Terminals.
Hintergrundfarben des Terminals
Um die Hintergrundfarbe und die Fonts in einem Terminal zu ändern, finden sich die Optionen im Menü des Terminal.
Es gibt eine Unmenge an Einstellungsmöglichkeiten für Hintergrundfarben. Wir empfehlen eine eher schlichte Einstellung.
Die ANSI Escape Sequence für Attribut- und Farbdarstellung
das Prinzip der Escape-Sequenzen für farbige Ausgabe
ist folgendes Format \033[, gefolgt von einer beliebigen Anzahl von Codes, die durch ; getrennt sind, und das letzte mit m abgeschlossen ist, z.B. \033[1;37;41m.
dabei gilt im Einzelnen
"Standard" bezieht sich auf die Voreinstellung des Terminals bzw. des Konsolenprogramms, und kann - insbesondere bei grafischen Terminalemulatoren - von allen (40 bis 47) in der Farbe abweichen.
in Verbindung mit dem Attribut 0 oder 1 ergeben sich folgende Textfarben
Black 0;30 Dark Gray 1;30
Blue 0;34 Light Blue 1;34
Green 0;32 Light Green 1;32
Cyan 0;36 Light Cyan 1;36
Red 0;31 Light Red 1;31
Purple 0;35 Light Purple 1;35
Brown 0;33 Yellow 1;33
Light Gray 0;37 White 1;37
Beispiel für farbige Ausgaben
echo -e "\033[46;1;31m TESTAUSGABE \033[43;4;34m KUNTER \033[45;1;32m BUNT \033[44;1;33m ANGESTRICHEN \033[0m"
Am Ende sollte möglichst immer \033[0m anbinden, damit die nachfolgende Ausgabe dann wieder "normal" ist.
Script um eine Farbübersicht zu erhalten
Eine Übersicht welche Farben wie auf welcher Hintergrundfarbe wirkt, kann man mit diesem kleinem Script hier erzeugen [Fundort]
#!/bin/bash
#
# This file echoes a bunch of color codes to the
# terminal to demonstrate what's available. Each
# line is the color code of one forground color,
# out of 17 (default + 16 escapes), followed by a
# test use of that color on all nine background
# colors (default + 8 escapes).
#
T='gYw' # The test text
echo -e "\n 40m 41m 42m 43m\
44m 45m 46m 47m";
for FGs in ' m' ' 1m' ' 30m' '1;30m' ' 31m' '1;31m' ' 32m' \
'1;32m' ' 33m' '1;33m' ' 34m' '1;34m' ' 35m' '1;35m' \
' 36m' '1;36m' ' 37m' '1;37m';
do FG=${FGs// /}
echo -en " $FGs \033[$FG $T "
for BG in 40m 41m 42m 43m 44m 45m 46m 47m;
do echo -en "$EINS \033[$FG\033[$BG $T \033[0m";
done
echo;
done
echo
der Befehl tput
Wie wir es gewohnt sind, gibt es unter LINUX immer mehrere Möglichkeiten um ein und das selbe zu erreichen. mit dem Befehl tput läßt sich ebenfalls Farbe auf die Konsole zaubern. Das ist aber nur ein Teilbereich dieses Befehls. Für genauere Informationen bitte in die Manpages von tput und terminfo schauen. Einen kleinen Vorgeschmack über die Möglichkeiten mittels tput die Farben innerhalb des Terminals zu beeinflussen bekommt man auch hier
Neben der Wahl von Textfarbe, Hintergrundfarbe, Textattribute wie Fett und Unterstrichen (um nur mal einige der Wichtigsten zu nennen), kann man mit tput auch den Cursor innerhalb des Terminals frei positionieren, einzelne Zeichen oder Zeilen löschen, oder neue Zeichen und Zeilen dazwischenschieben, den Bildschirm leer machen, oder das Terminal auf seine Einstellungen zurücksetzen, wenn man mal nur noch Sonderzeichen auf dem Bildschirm hat, die Eigenschaften des aktuellen Terminals abfragen und vieles mehr. Aber auch hier ist zu bemerken, dass die Möglichkeiten dieses Befehles schon durch die jeweiligen Terminaleinstellungen beschränkt werden. Man sollte also daran denken, wenn man innerhalb eines Scriptes mit tput arbeitet, dass es auf einem anderem Rechner oder den Einstellungen eines anderen Users durchaus auch ein furchtbares unansehnliches Bild ergeben kann. Auch sollte man unbedingt prüfen ob sich am Ende wirklich ein Terminal ( besser sogar noch welcher Terminaltype ) befindet, oder die Ausgabe eventuell in eine Datei oder in eine Pipe geleitet ist. Anstelle von Erklärungen der einzelnen Funktionen und Optionen von tput hier ein kleines Script in dem einige Funktionen von tput eingebaut sind, zum Ausprobieren.
#!/bin/bash
if [ -t 1 ]
then
typeset -i ZEILE
tput clear
for HINTERGRUND in 0 1 2 3 4 5 6 7 8
do
tput sgr0
tput setaf $HINTERGRUND
ZEILE=5+$HINTERGRUND
for POSITION in 5 30 55
do
tput cup $ZEILE $POSITION
if [ $POSITION -eq 30 ]
then tput smul
fi
if [ $POSITION -eq 55 ]
then tput bold; tput rmul;
fi
for FARBE in 0 1 2 3 4 5 6 7 8
do
tput setab $FARBE
echo -n "X-"
done
done
done
tput sgr0
tput home
for i in 1 2 3
do
tput bel
sleep 1
tput flash
done
else
echo "Ausgabe geht nicht an ein Terminal"
fi
Anwendung von tput innerhalb eines Scriptes
oftmals wird man Farb- oder Testattribute öfter innerhalb eines Scriptes verwenden wollen. Es ist deshalb oftmals von Vorteil, wenn man diese Attribute in Variable ablegt, und dann an Ort und Stelle in die Ausgaben einbaut. Ein kleines Beispiel soll das verdeutlichen.
BLACK=`tput setaf 0`
ROT=`tput setaf 1`
BLAU=`tput setaf 4`
GELB=`tput setaf 3`
echo "Das hier ist ein Text der durch ${ROT}rote${BLACK} durch ${BLAU}blaue ${BLACK}"
echo "und ${GELB}gelbe ${BLACK} Worte ${ROT}unterbrochen ${BLACK}ist."
Anwendung im Shell Prompt
farbiges Prompt
Die Shellvariable PS1 steuert das Verhalten des Prompts. Du kannst folgendes in deine .bashrc (in deinem Homeverzeichnis) schreiben:
if test \( "$TERM" = "xterm" -o "${TERM#screen}" != "$TERM" \) -a -z "$EMACS"
then
export PS1="\[\033[31m\]\[\e]2;\u@\h:\w\007\e]1;\h\007\]\u@\h:\w> \[\033[0m\]"
else
export PS1="\[\033[31m\]\u@\h:\w> \[\033[0m\]"
fi
Dann die Datei neu einlesen oder eine neue Bash eröffnen damit die Änderung wirkt
es genügt .bashrc im Homeverzeichnis abzusetzen
Danach solltest du einen roten Prompt haben.
Farbiger Errorlevel im Prompt
Errorlevel in rot anzeigen Folgenden Code in der aktuellen Bash ausführen oder für dauerhaften Gebrauch in der ~/.bashrc ablegen
PROMPT_COMMAND='LASTERROR="[$?]" ; test "$LASTERROR" = "[0]" || echo -ne "\033[93;41m${LASTERROR}\033[0m"'
export PROMPT_COMMAND
Jetzt wird der Rückgabe Wert eines Befehles oder Scriptes insofern er nicht 0 ist, innerhalb des folgenden Prompt farbig angezeigt, das kann sehr hilfreich sein, z. B. für das Schreiben und Testen von Befehlsketten oder Scripte.
Links zum Thema Prompt
Anwendungen innerhalb des ls Befehles
Der ls Befehl kann Dateientypen an Dateiattributen und Prefixen erkenne und farbig darstellen.
Siehe dazu auch man ls
Verantwortlich für das Einschalten dieser Funktion ist die Option --color
Zuordnung der Farben zu den Dateitypen
Die Zuordnung der Farben zu den Dateitypen wird global für alle in der /etc/DIR_COLORS vorgenommen. Jedem User sollte es aber möglich sein diese Datei in sein Homeverzeichnis unter dem Namen .dir_colors zu kopieren, dann kann er seinen Bedürfnissen und Vorlieben entsprechend, selbst seine persönlichen Einstellungen durch änderen dieser Datei vornehmen.
cp /etc/DIR_COLORS ~/.dir_colors
Danach einfach die bash neu starten, damit die Änderungen wirken.
Mehr Infos mit man DIR_COLORS
Links zum Thema ls und Color
Syntax Highlighting im vi
Der Texteditor vi auf der Konsole, der in keinem LINUX/UNIX fehlt, ist in den modernen Linuxsystemen auf einen wesentlich leistungsfähigeren Nachfolger vim oder einen Klon davon, gelinkt. Dieser Editor kann unter Anderem auch Syntax Highlighting" für eine Vielzahl von Dateitypen.
Im Verzeichnis /usr/share/vim/current/syntax/ stehen die Syntaxkonfigurationsfiles. Anhand der Endung (prefix) der zu editierenden Datei erkennt vim welche Syntax für diesen Dateitype zu benutzen ist. Selbstverständlich kann man auch seine eigenen Syntax-Konfigurationsfiles entwerfen und einsetzen und auch die Farben anpassen. Siehe dazu http://vimdoc.sourceforge.net/htmldoc/usr_44.html
Ein- Ausschalten des Syntax highlighting im vim
permanet durch Eintrag in der Vim-Konfigurationsdatei ~/.vimrc
anlegen der Datei bzw. erweitern dieser Datei und folgenden Eintrag vornehmen
syntax on
bei Bedarf durch Zeilenoption beim Start von vi
# vi +"syn on" file.prefix
bei Bedarf während der Sitzung im Kommandomodus
hier kann während der Sitzung dieser Modus nach Belieben Ein- und Ausgeschaltet werden
:syntax on
Analog Ausschalten
:syntax off
How do I modify or change the prompt?
Modifying the prompt is easy task. Just assign a new value to PS1 and hit enter key:
My old prompt --> [vivek@105r2 ~]$
PS1="touch me : "
Output: My new prompt
touch me :
So when executing interactively, bash displays the primary prompt PS1 when it is ready to read a command, and the secondary prompt PS2 when it needs more input to complete a command. Bash allows these prompt strings to be customized by inserting a number of backslash-escaped special characters that are decoded as follows:
Let us try to set the prompt so that it can display today’d date and hostname:
PS1="\d \h $ "
Output:
Sat Jun 02 server $
Now setup prompt to display date/time, hostname and current directory:
$ PS1="[\d \t \u@\h:\w ] $ "
Output:
[Sat Jun 02 14:24:12 vivek@server:~ ] $
How do I add colors to my prompt?
You can change the color of your shell prompt to impress your friend or to make your own life quite easy while working at command prompt.
Putting it all together
Let us say when you login as root/superuser, you want to get visual confirmation using red color prompt. To distinguish between superuser and normal user you use last character in the prompt, if it changes from $ to #, you have superuser privileges. So let us set your prompt color to RED when you login as root, otherwise display normal prompt.
Open /etc/bashrc (Redhat and friends) / or /etc/bash.bashrc (Debian/Ubuntu) or /etc/bash.bashrc.local (Suse and others) file and append following code:
# vi /etc/bashrc
or
$ sudo gedit /etc/bashrc
Append the code as follows
# If id command returns zero, you’ve root access.
if [ $(id -u) -eq 0 ];
then # you are root, set red colour prompt
PS1="\\[$(tput setaf 1)\\]\\u@\\h:\\w #\\[$(tput sgr0)\\]"
else # normal
PS1="[\\u@\\h:\\w] $"
fi
Close and save the file.
|
Hardwareinformationen auslesen
Es gibt verschiedene Dateien in denen Systeminformationen enthalten sind. Diese sind vor allem in Verzeichiss /proc. Die Datei /proc/cpuinfo enthällt informationan über die CPU(s)
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 23
model name : Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz
stepping : 6
cpu MHz : 1998.000
cache size : 6144 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 lahf_lm tpr_shadow vnmi flexpriority
bogomips : 5984.49
clflush size : 64
power management :
Freier Speicherplatz des RAMs
free
mit free wird die RAM speicher belegung angezeigt
total used free s hared buffers cached
Mem: 2072036 2009540 62496 0 15468 1582420
-/+ buffers/cache: 411652 1660384
Swap: 4088500 17364 4071136
mit den optionen -k -m -g werden die zahlen in kB, MB oder GB angezeigt.
Festplattenbelegung
df
Die Festplattenbelegung kann man durch das komando df -h anzeigen lassen. h für human readable, was bedeutet das die Zahlen in vernünftigen Zahlen angezeigt werden.
Dateisystem Größe Benut Verf Ben% Eingehängt auf
/dev/sda1 12G 2,5G 8,8G 23% /
/dev/sda6 278G 18G 261G 7% /home
uptime, zeigt
01:33:52 up 3:41, 3 users, load average: 0.03, 0.05, 0.01
mit who kann man sehen wer eingelogged ist
[matthias@localhost ~]$ who -a
2010-05-08 20:52 66 id=si term=0 exit=0
Systemstart 2010-05-08 20:52
Runlevel 5 2010-05-08 20:52 last=S
2010-05-08 20:52 794 id=l5 term=0 exit=0
2010-05-08 20:52 2336 id=1
LOGIN tty2 2010-05-08 20:52 2337 id=2
LOGIN tty3 2010-05-08 20:52 2338 id=3
2010-05-08 20:52 2339 id=4
LOGIN tty5 2010-05-08 20:52 2340 id=5
LOGIN tty6 2010-05-08 20:52 2341 id=6
matthias ? :0 2010-05-08 21:05 ? 5811
matthias + pts/0 2010-05-08 21:06 04:28 5985
matthias - pts/1 2010-05-09 01:22 . 10862
pts/2 2010-05-08 23:00 0 id=/2 term=0 exit=0
pts/3 2010-05-08 23:00 0 id=/3 term=0 exit=0
pts/4 2010-05-08 23:00 0 id=/4 term=0 exit=0
pts/5 2010-05-08 23:00 0 id=/5 term=0 exit=0
bei SuSE gibt es auch einen finger kommando
mit smbstatus wird der status sowie die eingeloggedten benutzer angezeigt.
|
Interessante Kommandos
(SUSE)
lspci|grep VGA --> zeigt die Grafikkarte an.
kernelversion --> zeigt die aktuelle Kernelversion an.
hwinfo --> zeigt die komplette Hardwareinfo an. Da das nicht auf den bildschirm passt, sollte die ausgabe in eine Datei gemacht werden. Z.B. [hwinfo > hwinfo.txt] schreibt alles in die Datei hwinfo.txt
bc --> konsole taschenrechner. mit "quit" beenden
|
"Info" Dateien
Es gibt auf dem System diverse Dateien die informationen enthalten und vom System angezeigt werden.
Das berühmte "Have a lot of fun ....." nach dem einloggen steht in der /etc/motd. motd bedeutet hierbei "Message of the day".
Schon nach dem hochfahren kommt als letze Meldung "Welcome to openSUSE 11.0 ...." Dies steht in der /etc/issue
|
motd – Informative Begrüßung mit allen Lebenszeichen auf einen Blick
Wer schon einmal auf einen Linux/Unix/BSD Server eingeloggt hat, der kennt die kurze Begrüßung, die einem zuteil wird.
motd, das ‘motto of the day’ kann aber mit wenigen Handgriffen dazu gebracht werden, einem beim Login alle Lebenszeichen des Systems auf einen Blick hin übersichtlich zu präsentieren.
Normalerweise begrüßt uns ein default Server etwa so:
Linux main 2.6.24.7-20080507a #1 SMP Wed May 7 10:10:41 CEST 2008 i686
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Die Date /etc/motd, die diesen Text enthält kann aber mit minimalem Aufwand so verändert werden, dass alle Lebenszeichen und dringlichen Probleme des Systems beim Einloggen auf einen Blick zur Verfügung stehen:
- Speicherzustand RAM
- Zustand der eingebundenen Dateisysteme
- Zustand evtl. RAID Geräte
Damit sind die drei wichtigsten Ausfall-Ursachen bzw. deren Vorboten oder Signale schnell auf einen Blick erfasst.
Schreiben Sie dazu bitte einfach ein kleines Skript, beispielsweise in den Ordner /opt – öffnen Sie also eine neue Datei mit einem Editor Ihrer Wahl:
joe /opt/motd_aktuell.sh
Hier sorgen wir nun dafür, dass die o.g. Daten in /etc/motd eingetragen werden, zuerst den aktuellen Hostnamen:
cat /etc/hostname > /etc/motd
Beachten Sie bitte das ‘>’ – es führt dazu, dass die alte motd Nachricht überschrieben wird.
Nun lassen wir uns den Speicherzustand lesbar in die motd kopieren:
free -m >> /etc/motd
Beachten Sie bitte hier das ‘>>’ – es wird nicht mehr überschrieben, sondern angefügt.
Nun noch die Übersicht über die eingebundenen Datenträger:
df -h >> /etc/motd
Bei der Information über den Zustand der RAID Geräte stellt sich natürlich die Frage, was installiert ist. Für ein Software RAID verwenden Sie bitte:
cat /proc/mdstat >> /etc/motd
Um Beispielsweise den Status eines 3Ware Systems zu erfragen, muss ein command line tool wie tw_cli installiert sein (mehr dazu in den 3ware/AMCC Artikeln)
(Nur ein Beispiel, hier kommt es sehr darauf an, was installiert ist, welche Zuordnung der Controller hat usw…)
Dieser Code würde eine Kurzübersicht über Controller “4″ ergeben.
Sinnvoll ist es, sich zum Schluß noch schnell die aktuelle Last mitsamt Uptime anzeigen zu lassen:
uptime >> /etc/motd
Alles zusammen würde dann für ein Software Raid System folgendes ergeben:
cat /etc/hostname > /etc/motd
free -m >> /etc/motd
df -h >> /etc/motd
cat /proc/mdstat >> /etc/motd
uptime >> /etc/motd
Speichern Sie nun diese Datei (/opt/motd_aktuell.sh) und geben Sie ihr ausführbare Rechte:
chmod 700 /opt/motd_aktuell.sh
Falls Sie nun mit “root” Rechten eingeben:
/opt/motd_aktuell.sh
…wird Ihre motd verändert, zu prüfen mit einem anschließenden:
cat /etc/motd
athos.somewherebehindtherainbow.cc
total used free shared buffers cached
Mem: 1992 1460 532 0 15 1054
-/+ buffers/cache: 389 1602
Swap: 3827 0 3827
Filesystem Size Used Avail Use% Mounted on
/dev/md1 950M 537M 365M 60% /
tmpfs 997M 0 997M 0% /lib/init/rw
tmpfs 997M 0 997M 0% /dev/shm
/dev/md5 4.7G 1.4G 3.4G 29% /usr
/dev/md6 4.7G 1.8G 3.0G 37% /var
/dev/md7 221G 89G 133G 40% /home
none 997M 8.0K 997M 1% /tmp
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [faulty]
md1 : active raid1 sdb1[1] sda1[0]
987840 blocks [2/2] [UU]
md5 : active raid1 sdb5[1] sda5[0]
4891648 blocks [2/2] [UU]
md6 : active raid1 sdb6[1] sda6[0]
4891648 blocks [2/2] [UU]
md7 : active raid1 sdb7[1] sda7[0]
231464384 blocks [2/2] [UU]
unused devices:
20:57:24 up 58 days, 2:16, 1 user, load average: 0.14, 0.11, 0.09
Um diese Information nicht jedes Mal von Hand aktualisieren lassen zu müssen – das wäre wenig sinnvoll, wir wollen diese ja bei jedem Einloggen direkt zur Hand haben, legen wir einen Cronjob an, der alle 5 Minuten eine neue motd erzeugt. Die Last hierbei für den Rechner ist minimal, der Nutzen vielfältig!
Als Root:
crontab -e
Und hier einen zusätzlichen Eintrag in folgender Form einfügen:
*/5 * * * * /opt/motd_aktuell.sh &
Dies sorgt dafür, dass alle fünf Minuten (*/5), in jeder Stunde (*), an jedem Tag des Monats (*), in jedem Monat (*), an jedem Tag der Woche (*) das Kommando für die Aktualisierung ausgeführt wird.
Viel Spaß damit!
|
Eine frei verwendbare Unix-Grundlagenschulung mit muLinux
Shell-Variablen
Was ist eine Shell?
Shell ist der Kommandointerpreter unter Unix. Das klingt erst mal kompliziert. Wir haben aber schon die ganze Zeit mit der Shell gearbeitet. Wir haben Befehle, wie z. B. ls oder date, eingegeben und uns an den Reaktionen von Unix erfreut. Dieser Dialog wird durch den Kommandointerpreter realisiert. Dieser liegt wie eine Schale (engl. Shell) über dem Betriebsystem und sorgt für die Kommunikation mit dem Nutzer.
Genaugenommen gibt es unter Unix mehrere Shells (C, Korn, Bash, ...). Jeder Nutzer kann sich für seine Lieblingsshell entscheiden. muLinux verwendet aber nur eine Shell. Die Unterschiede der Shells sind (für normale Nutzer) gering und sollten uns daher vorerst nicht interessieren.
Was ist eine Variable?
Eine Variable ist lediglich ein Name, dem ein Wert zugewiesen wurde. Es gibt drei Variablentypen:
Systemvariablen bestimmen die Eigenschaften des System dem Nutzer gegenüber und können vom Nutzer angepaßt werden. Systemvariablen werden mit Großbuchstaben geschrieben.
Auf die speziellen Variablen kann nur lesend zugegriffen werden. Sie bestimmen allgemeine Systemeigenschaften.
Benutzerdefinierte Variablen können vom Nutzer erzeugt, geändert und gelöscht werden. Sie können z. B. für Shell-Skripte eingesetzt werden. Das sind kleine Programme, die sich wiederholende Arbeiten vereinfachen können.
Anzeigen vorhandener Variablen
Zur Anzeige aller Variablen dient der Befehl set.
/# set
Es werden die Systemvariablen mit Inhalt angezeigt. Links stehen die Variablennamen, dann kommt ein Gleichheitszeichen und danach der Inhalt der Variablen. Um alle Variablen zu sehen, müssen wir den Bildschirminhalt scrollen ([Shift] [Bild auf], [Shift] [Bild ab]). Dafür sind es doch sehr viele, wie uns folgender Befehl anzeigt:
/# set | wc
Wir wollen hier nur einige Systemvariablen besprechen. Zu Beginn schauen wir uns mal die Systemvariable PS1 an. Wer den Bildschirm nicht scrollen will, kann mit grep nur die Zeile mit PS1 anzeigen lassen:
/# set | grep "PS1"
PS1=/#
/# _
Die Variable PS1 beinhaltet also die zwei Zeichen /#. Was ist das? Das kommt uns doch irgendwie bekannt vor. Ja, das ist unser Prompt! Mal sehen ob wir diesen ändern können.
Zuweisen eines Inhaltes
Eine Variable wird mit folgender Syntax definiert, wobei keine Leerzeichen vor oder nach dem Gleichheitszeichen stehen dürfen:
Variable=Wert
Wir wollen den Prompt so ändern, daß "Befehl?" als Prompt erscheint:
/# PS1=Befehl?
Befehl?_
Schöner wäre es aber mit einem Leerzeichen nach "Befehl?". Wenn wir Leerzeichen haben wollen, müssen wir den Wert in Anführungsstrichen einschließen:
/# PS1="Befehl? "
Befehl? _
Dies ist auch notwendig, wenn wir mehrere Wörter als Wert zuweisen wollen:
/# PS1="Gebe bitte einen Befehl ein: "
Gebe bitte einen Befehl ein: _
Wer will kann auch einen DOS-Prompt mit PS1="C:\> " vorgaukeln.
Anzeigen einer Variablen
Zum Anzeigen einer Variablen kann der Befehl echo verwendet werden. echo gibt Text aus. Dieser Befehl ist notwendig bei Shell-Skripten.
Gebe bitte einen Befehl ein: echo PS1
PS1
Gebe bitte einen Befehl ein: _
So wird leider nur der Text "PS1" angezeigt und nicht der Inhalt von PS1. Dazu muß Dollarzeichen $ vor der Variablen stehen:
Gebe bitte einen Befehl ein: echo $PS1
Gebe bitte einen Befehl ein:
Gebe bitte einen Befehl ein: _
Wir können auch Text und Variablen mischen:
Gebe bitte einen Befehl ein: echo "Das ist der Inhalt von PS1: $PS1"
Das ist der Inhalt von PS1: Gebe bitte einen Befehl ein:
Gebe bitte einen Befehl ein: _
Leeren von Variablen
Um eine Variable zu leeren, gibt man den Variablennamen nur gefolgt von einem Gleichheitszeichen ein:
/# PS1=
_
Die Variable bleibt dabei aber bestehen. Sie ist nur leer.
/# set | grep "PS1"
PS1=
/# _
Wenn wir PS1 leeren, haben wir kein Prompt mehr. Was passiert eigentlich beim Wechseln in ein anderes Verzeichnis?
cd /home
/home# _
Die Variable PS1 wird hier also vom System überschrieben.
Schreibschutz für Variablen
Mit dem Befehl readonly (engl. nur lesen) können Variablen gegen eine mögliche Änderung geschützt werden.
/# readonly PS1
Jeder Versuch PS1 zu ändern, wird mit einer Fehlermeldung quittiert. Der Schreibschutz bleibt bis zum Verlassen der Shell erhalten. Ruft man den Befehl readonly ohne Parameter auf, werden alle schreibgeschützten Variablen angezeigt.
/# readonly
PS1
Benutzerdefinierte Variablen
Um eigene Variablen zu definieren, muß bei der Benennung folgendes beachtet werden:
Variablen können zur Vereinfachung bzw. bei Wiederholung von Befehlen eingesetzt werden. So zum Beispiel als Befehlsoption:
/# a=/usr/bin
/# cd $a
/usr/bin# _
Oder als Befehl:
/# b="ls -l"
/# $b
Lange Ausgabe de Verzeichnisinhaltes
Wir können auch die Ausgaben von Programmen in eine Variable speichern. Dazu müssen wir den Programmaufruf in zwei rückwertige Hochkomma (franz. Accent grave) ` einklammern.
/# heute="Heute ist `date`"
/# echo $heute
Heute ist Tue Nov 16 15:54:16 1999
/# _
Erweitern des Variableninhaltes
/# toll=abend
/# toll=Feier$toll
/# echo $toll
Feierabend
/# _
Zum Löschen einer Variable dient der Befehl unset:
/# unset a
/# _
|
tar Kommando
Haben Sie Software als tar.gz- oder tar.bz2Dateien heruntergeladen, müssen Sie diese komprimierten Archive zunächst entpacken. Die Befehlszeile
tar -xzvf .tar.gz |
beispielsweise entpackt ein tar.gz-Archiv. Wenn das Archiv dagegen im bzip2-Format vorliegt, so trägt dieses die Datei-Endung ".tar. bz2". Die Befehlszeile lautet in dem Fall:
tar -xjvf .tar.bz2 |
Bei Paketen im tar.gz/bz2-Format handelt es sich meist um Quellcode. Bevor Sie die Software nutzen können, müssen Sie den von einem Programmierer geschriebenen Quellcode in Maschinensprache übersetzen, ihn also kompilieren.
Um Software zu kompilieren, benötigen Sie einige Entwicklerwerkzeuge. Unter Suse Linux installieren Sie die Werkzeuge etwa mit dem Yast-Modul "Software installieren oder löschen" von Ihren Distributionsmedien nach. Wählen Sie dazu "Selektionen", und markieren Sie die Rubrik "C/C++ Compiler und Werkzeuge".
Alternativ laden Sie passende Pakete aus dem Internet herunter. Je nach ver-
wendetem System müssen Sie auf den Distributions-CDs, der Website Ihres Distributors oder unter www. rpmfind.com nach passenden Paketen suchen. Unter Debian GNU/Linux können Sie sich mit apt oder Synaptic auf die Suche machen. Hauptwerkzeug fürs Kompilieren ist ein Compiler, etwa gcc (Gnu C Com piler, http://gcc.gnu. org, Version 4.1.0; 37,7 MB), der fast jeder Distribution beiliegt.
Ebenfalls unerlässlich ist make (www.gnu.org/software/make/make.html, Version 3.80; 1,2 MB), das Makros für gcc ausliest und deren Befehle an den Compiler übergibt. Die Programmsammlung binutils (www. gnu.org/software/binutils/, Version 2.16.1; 12 MB) enthält wichtige Dienstprogramme für den Compiler.
Schließlich benötigen Sie noch pkgconfig (www.freedesktop.org/software/pkgconfig/releases/, Version 0.20; 947 KB), das sämtliche installierte Bibliotheken eines Systems in einer Datenbank zusammen-
fasst, damit configure und make sie beim Kompilieren finden. In der Regel brauchen Sie noch weitere Pakete. Welche das sind, hängt jedoch stark vom zu kompilierenden Programm ab, so dass sich nicht alle auflisten lassen. Meist sind es Systembibliotheken mit einem "devel" im Namen.
Der Installations-Dreisatz
Die den Quellcode-Paketen beiliegenden Readme- oder Install-Dateien geben Hinweise auf besondere Vorgehensweisen bei der Installation - etwa wenn der Aufruf von "configure" entfällt - und weisen meist auch auf benötigte "devel"-Pakete hin.
Um ein Programm aus dem Quellcode zu installieren und für Ihr System zu optimieren, benutzen Sie in einem Terminal Fenster die drei Befehle "./configure", "make" und "make install". Mehr erfahren Sie im Nachfolgenden.
Die meisten Probleme bereiten fehlende oder scheinbar fehlende "devel"-Pakete.
1.Fall: "configure" bemängelt ein fehlendes Paket; Sie stellen allerdings fest, dass das Paket schon vorhanden ist. Das Script vermutet dann das Paket an einer anderen Stelle im System und findet es deshalb nicht.
Ein Beispiel: Erhalten Sie etwa von configure die Fehlermeldung "gtkconfig not found", so liegt das daran, dass unter Suse Linux die Datei im Ordner /opt/gnome/bin liegt und nicht im Verzeichnis /usr/bin. Generell hilft der Aufruf von "./configure -help". Damit erhalten Sie alle Parameter, die Sie "configure" selbst mitgeben können. Unter "Optional Packages" sehen Sie nun in diesem Beispiel den Parameter " - - w i t h - g t k prefix=PFX", den Sie "configure" dann mit folgender Befehlszeile mit auf den Weg geben können:
./configure --with-gtk-prefix=/ opt/gnome/bin |
Anschließend weiß "configure", wo sich die gesuchte Datei befindet, und Sie können mit dem Befehl "make" fortfahren.
2. Fall: "configure" beendet die Suche nach den benötigten Paketen erfolgreich, der Kompiliervorgang bricht aber während der Ausführung von make mit der Fehler-
meldung "error: file not found" ab. Der Grund: Der Programmierer des "configure"-Scripts hat vergessen, das Vorhandensein des einen oder anderen Pakets überprüfen zu lassen.
Hinter "error: file not found" steht dann, welche Datei fehlt, etwa "-lz". Das "l" am Ende der Zeile steht für "library" beziehungsweise "lib" und verrät Ihnen, dass eine Bibliothek fehlt. Dem folgenden "z" können Sie in diesem Fall entnehmen, dass es sich um das "devel"-Paket der "z"-Bibliothek handelt.
Um es nachzurüsten, verwenden Sie das Installations-Tool Ihrer Distribution, unter Suse etwa Yast. Geben Sie dann erneut den Befehl "make" ein, und setzen Sie damit den Kompiliervorgang fort. Taucht der Fehler noch auf, tippen Sie "make clean" und starten erneut mit "make".
configure
Ein Script mit dem Namen "configure" überprüft zunächst Ihr System und sammelt die dabei gewonnenen Informationen - beispielsweise über Ihren Prozessor - in einem Makro "Makefile". configure prüft außerdem, ob alle notwendigen "devel"-Pakete auf Ihrem System vorhanden sind. Fehlt eines, bricht das Script ab und teilt Ihnen in einer Fehlermeldung mit, um welches es sich handelt.
Falls das Kompilat spezielle Optionen erfordert, erfahren Sie diese mit dem Befehl "./ configure --help". Läuft configure ohne Fehler durch, ist der wichtigste Schritt schon getan. Bitte beachten Sie, dass jedes Programm sein eigenes configure-Script mitbringt, das speziell auf die jeweiligen Anwendung abgestimmt ist. Starten Sie es deshalb unbedingt aus dem Verzeichnis heraus, in dem der Quellcode des Programms liegt.
make
Als Nächstes rufen Sie "make" auf. Dieser Befehl liest das Makro "Makefile" aus, das configure erstellt hat, und veranlasst den Compiler, die speziellen Informationen beim Kompilieren des Quellcodes zu berücksichtigen. Damit beginnt das eigentliche Kompilieren des Programms, was je nach Rech-
nergeschwindigkeit und Quellcode-Umfang einige Minuten bis mehrere Stunden in Anspruch nehmen kann.
Sie können die Arbeit des Compilers auf Ihrem Bildschirm beobachten. Die kompilierten Dateien landen dann zunächst im Verzeichnis, in dem der Quellcode liegt. In seltenen Fällen bricht dieser Vorgang ab, etwa wenn das configure-Script die eine oder andere fehlende Bibliothek nicht berücksichtigt hat und der Compiler diese nicht findet. Wie Sie in diesem Fall vorgehen, erfahren Sie unter der Teilüberschrift: Probleme beim Komplieren unter Fall 2.
make install
Hat der Compiler seine Arbeit abgeschlossen, installiert der Befehl "make install", den Sie als root ein-
geben, das neue Programm und konfiguriert es. "make install" ruft dabei wiederum make auf, welches diesmal aber den Installationsteil des von configure erstellten Makros "Makefile" ausliest.
Etwaige Bibliotheken und Konfi-
gurationsdateien platziert make ebenfalls an der richtigen Stelle Ihres Systems. Programme landen meist im Verzeichnis /usr/bin, Bibliotheksdateien in /usr/ lib und Konfigurationsdateien in /etc.
Zusätzlich installiert das Programm Hilfe-Dateien (Manpages), denen Sie weitere Informationen zu Ihrem neuen Programm mit dem Befehl "man <Programmname>" entnehmen. Um das frisch kompilierte Programm aufzurufen, tippen Sie in einem Terminal-Fenster die Befehlszeile "<Programmname>&".