- Problem: Ich habe ein Bash-Skript, dem möchte ich optional einen Wert mit übergeben. Wenn das nicht der Fall ist soll ein Default-Wert verwendet werden.
- Lösung:
WARN="${4:-10%}"
Die Variable WARN nimmt den Wert des vierten an das Skript übergebenen Parameters an. Ist dieser leer wird stattdessen „10%“ genommen.
Schlagwort: bash
#sysadmin Teil 1: Wie man sich auf Linux Systemen verstecken kann
Hier mal ein paar kleine Dinge zusammengeschrieben wie man sich auf Linux Systemen verstecken kann. Was man als Sysadmin dagegen tun kann gibt es dann in dem nächsten Blogpost
- Wenn man den Output von den Kommandos lastlog, last oder lastb leeren möchte hilft folgendes:
user@host ~ $ >/var/log/lastlog user@host ~ $ >/var/log/wtmp user@host ~ $ >/var/log/btmp
- Befehle die mit vorangestellten zwei Leerzeichen ausgeführt werden sind normalerweise nicht der History sichtbar
user@host ~ $ cat /var/www/foo/mysql.inc.php
- Kommandos nicht in die History schreiben:
user@host ~ $ export HISTSIZE=0
- PROMPT_COMMAND resetten:
user@host ~ $ export PROMPT_COMMAND=""
- History löschen und Shell beenden:
user@host ~ $ unset HISTFILE && exit
- Prozesse verstecken kann man, indem man ein leeres Verzeichnis über ein /proc/PID Verzeichnis mountet. Den Mount wiederum kann man auch verstecken:
user@host ~ $ mkdir /tmp/foo user@host ~ $ cp /etc/mtab /tmp/t user@host ~ $ mount --bind /tmp/foo /proc/PID user@host ~ $ mv /tmp/t /etc/mtab
Weiteres gerne in die Kommentare.
Update 1, 25.07.2015:
https://twitter.com/lordcoke/status/623942954135257088
bash: Mehrere if-Bedingungen hintereinander
Mein Kollege fragte gerade, und ich habe im git Repository dann das Skript ausgegraben in dem ich es mir mal notiert habe, hier auch noch einmal festgehalten:
#!/bin/bash if ([ "$1" == "foo" ] || [ "$1" == "bar" ]); then echo "foo or bar" else echo "blafasel" fi |
Unix Timestamp vs. Java Timestamp
Wer als Sysadmin mit Java Entwicklern zu tun hat und beide wie selbstverstaendlich ueber Timstamps reden, dann gibt es doch einen entscheidenen Unterschied. Beide Timestamps geben die Zeit seit dem 01.01.1970 00:00:00h wieder. Unix Timestamps jedoch in Sekunden, Java Timestamps in Millisekunden.
Fuer die Praxis:
- 01.01.2014 00:00:00 als Unix Timestamp:
user@host:~$ date -d "2014-01-01 00:00:00" "+%s" 1388530800 user@host:~$
- 01.01.2014 00:00:00 als Java Timestamp:
usaer@host:~$ echo $(date -d "2014-01-01 00:00:00" "+%s")*1000 | bc 1388530800000 user@host:~$