Ubuntu disk UUID

Ha fstab-ban szeretnénk mountolni, ajánlott használni az uuid-et. Ebben az esetben, ha átdugják a merevlemezt egy másik vezérlőbe (vagy csak az új kernel összekeveri a vezérlőket), akkor is fel tudja mountolni a rendszer a meghajtót, és mondjuk el is indul, ami nem egy hátrány egy szerver esetén.

Egy lemez uuid-jét a legegyszerűbben az alábbi módon tudhatjuk meg:


root@nas:~# blkid /dev/md1
/dev/md1: UUID="9bf2c0f8-9190-4db0-943e-e747e306a4b1" TYPE="ext4"

Javadoc generálás statikus adatokkal

A javadoc fontos, főleg ha publikus szolgáltatásokat készítünk. Néha viszont szükség van olyan algoritmus alapján előállított adatokra, amiket nem esik túl jól kézzel beírni…

Ilyenkor nyújthat nagy segítséget egy két shell script, amikkel az ilyen módosítások elég hatékonyan elvégezhetőek.
A scriptet nem hiszem, hogy bárki is tudja majd használni ebben a formában, de kiindulásnak (és nekem memó-nak) még jól jöhet…

A lenti dolog mit is csinál:
– kigyűjti az összes /services/ könyvtár alatti package-info.java-t
– kikalkulálja, hogy mi lesz a kiajánlott szolgáltatás neve (pl TestWebSzolgService.java – TestWebSzolg)
– csinál belőle egy javadoc szöveget, amit beszúr az összes package-info első sorába

Tadamm… Pár óra szolgai gépeléstől megint megmentett a bash.

#!/bin/sh
find . -name "package-info.java" | grep "/services/" | while read line;
do
#teljes eleres
PACKAGE_INFO_PATH=$line
#csak a konyvtar ahol a packageinfo van
CURR_DIR=${PACKAGE_INFO_PATH%/*}
#a valamiService.java fajl teljes elerese (de mar Service.java nelkul)
CURR_SERVICE_PATH=`find $CURR_DIR -name "*?Service.java" | sed 's/Service.java//'`
#csak a szolgaltatas neve
CURR_SERVICE_NAME=${CURR_SERVICE_PATH##*/}

echo $PACKAGE_INFO_PATH
echo $CURR_DIR
echo $CURR_SERVICE_NAME

FIRST_LINE="/** WSDL: https://webservice.aaa.hu/da/hs/services/${CURR_SERVICE_NAME}*/"

sed -i 1i"$FIRST_LINE" $PACKAGE_INFO_PATH
done

SCP scriptből

Normál esetben az scp-t kulcsokkal használjuk (mint minden mást), és nincs szükség jelszóra… Bizonyos esetekben erre nincs mód, és ilyenkor problémát okozhat a jelszóbekérés kezelése. A példa értelemszerűen nem csak scp-re működik, gyakorlatilag minden adatbekérő parancs wrap-elhető expect-el

#!/usr/bin/expect -f

eval spawn scp felhasznalonevem@[lindex $argv 0]:[lindex $argv 1] [lindex $argv 2]

expect {
"password:" {
send "titkosjelszavam\n"
} "(yes/no)?" {
send "yes\n"
} eof {
exit
}
}

expect "$ $"

Excel file merge

Néha jól jönne, ha sok külön excel fájlt, egy nagy excel fájlban lehetne látni. Erre vannak mindenféle fizetős eszközök (mind lehúzás), az excel is csinál valamit, de egyik sem az igazi.

Ha programozni akarunk írhatunk rá pár nap alatt egy java programot, ha nem akarunk, akkor a lenti script segíthet…

#!/bin/sh

#environment setup: http://software.krimnet.com/xls2csv/guide-converting-xls-files-csv-with-xls2csv-ubuntu.htm

rm result.csv

cat files.txt | tr -d "\015" | while read XLS_FILE
do
if [ $XLS_FILE == "--EOF--" ]
then
break
fi

echo Processing xls $XLS_FILE
XLS_FILE_SNAME=`basename $XLS_FILE`
cat sheets.txt | tr -d "\015" | while read SHEETS
do
if [ $SHEETS == "--EOF--" ]
then
break
fi

xls2csv -x $XLS_FILE -w $SHEETS -b UTF-8 -c tempsheet.csv
cat tempsheet.csv | grep -v "Projekt azonosító" | LANG=hu_HU.UTF-8 sed "s/^.*\$/${XLS_FILE_SNAME};${SHEETS};&/" | LANG=hu_HU.UTF-8 sed "s/\./,/g" >> result.csv
rm tempsheet.csv
done
done

A files.txt fájlból olvassa a konvertálni kívánt fájlok neveit, –EOF– -ig. Pl: :
a.xls
b.xls
–EOF–

Magyar karakterek irssi alatt

Bizonyos linux-okon az irssi alatt furcsán viselkednek az ékezetes karakterek. A megváltást itt is (általában ilyen esetekben mindig) az UTF-8 jelenti.

Az alábbi 2 beállítást kell tenni:
A putty-ban be kell állítani, hogy UTF-8-at használjon:
Putty Configuration: Window - Translation - Recieved data assumed to be in which character set: UTF-8

Irssi alatt:


Q: How to make UTF-8 support work with irssi?

A: Make sure your terminal supports UTF-8 (for example, xterm -u8). If you use screen, you may have to do screen -U. And in Irssi do /SET term_charset utf-8. (for 0.8.9 and older: /SET term_type utf-8)

(forrás: http://irssi.org/documentation/faq)

Ezek után irssi-be érdemes még mondani egy /save és kész is vagyunk…

Ubuntu too many open files

Ha túl sok a megnyitott fájl (enterprise és java alkalmazások előnyben), akkor az alábbit kell tenni:

Ide kell írni a limiteket:

/etc/security/limits.conf

Az alábbi módon:

* soft nofile 65535
* hard nofile 65535

Ezek után ellenőrizhetjük a beállításunkat:

ulimit -n

Ha 1024-et ír ki a 65535 helyett, akkor annak az az oka, hogy nincs benn a megfelelő pam modul, amit az alábbi módon tudunk betenni.

/etc/pam.d/common-session

session required pam_limits.so

Levélküldés tesztelése

Manapság már nem nagy dolog olyan alkalmazást fejleszteni ami emailt tud küldeni. Ellenben fejlesztés alatt egyáltalán nem biztos, hogy szerencsés, ha a valódi felhasználók a fejlesztők viccesebbnél viccesebb tárgyú leveleit kapják kézhez (pl. szerződését díjrendezettség hiányában töröltük, stb). Ezt elkerülendő lehet mindenféle if-eket írni a kódba, de ez sajnos megváltoztatja a program működését, és ezzel a metódussal elég sok potenciális hibaforrást elrejthetünk a kódban. Célszerűbb csinálni egy saját smtp szervert, ami e leveleket fogadja, de nem küldi ki, hanem lementi egy könyvtárba.

Erre a legegyszerűbb megoldás linux alatt a fakemail nevű program, ami a phytonnal együtt jön.

Tehát a telepítés

sudo apt-get install python

Az indítás (pl. init.d-ből)

sudo su -c ‘fakemail.py –host=voji.hu –port=10025 –path=/var/samba/servers/smtp –background’ voji

A lényeg a ‘ ‘ jelek közötti rész, a su -c csak azért felel, hogy voji userként fusson a szerver.

A paraméterek:

  • host – a cím, ahol a szerver fut
  • port – port ahol hallgatózik majd az smtp szerverünk
  • path – könyvtár ahova a leveleket lementi amit a szerveren keresztül küldenek.
  • background – háttérben fusson, ne a konzolon