U malo pomoći PHPa na windowsu

Pošto mi je probleme najlakše rešavati na linuxu sa (pa neki script jezik, izmedju ostalog PHP), problem nastane kad treba nešto uraditi što treba instalirati negde gde nema linuxa.

Jedno od rešenja, staviću na svoj server i dati korisnicima URL, i to radi odlično, osim u slučajevima kad scriptama treba pristup nečemu što je u lokalnoj mreži. A rešenja za to: custom browseri, java apleti, vpn,… verovatno još neko kojeg se nisam setio drastično komplikuje.

PHP se lepo i elegantno vrti na windowsu, ali ako nije neka statična scripta, potreban je web server, e tu opet ima više opcija, ali instalirti apache zbog 2 php scripte koje će nešto uraditi mi je malo previše, ali je jedno od lepih rešenja.

Jednostavnije i elegantnije rešenje: PHP ima u sebi embedded web server, koji se jednostavno pokrene tako što se pozicionirate u document root direktorijum i pokrenete php -S localhost:8080 i dobili ste web server koji se vrti na localhostu i može se pristupiti browserom, a sa druge strane scripte imaju kompletno pristup svim lokalnim resursima.

Prozor koji stoji otvoren, briga klienta da li je tamo nešto (što nema pojma šta je) pokrenuto i slični problemi su vrlo neozbiljni, i opterećujući. Pa hajmo da napravimo windows service od PHPa.

Program se zove nssm. I sve što je potrebno je jedna .cmd scripta koja će podesiti service.

inssvc.cmd

nssm install phpweb C:\php\php.exe
nssm set phpweb AppParameters -S localhost:8080
nssm set phpweb AppDirectory C:\php\htdocs
nssm set phpweb AppStdout C:\php\logs\stdout.log
nssm set phpweb AppStderr C:\php\logs\stderr.log
nssm set phpweb AppStopMethodSkip 6
nssm set phpweb AppStopMethodConsole 1000
nssm set phpweb AppThrottle 5000
nssm start phpweb

I to bi trebalo da bude to. Usput možemo napraviti još nekoli .cmd fajlova da bi ako zatreba mogli lako da pokrenomo, zaustavimo, restartujemo server.

delsvc.cmd – deinstalacija servica

nssm stop phpweb
nssm remove phpweb

start.cmd – startovanje servica

nssm start phpweb

stop.cmd – stopiranje servica

nssm stop phpweb

start-console.cmd – startovanje u konzoli, ako vam je potrebno da lako vidite stderr

cd htdocs
..\php -S localhost:8080

Ovo je tek malo testirano kod mene na računaru, videćemo kako će se pokazati u praksi. Ja se nadam da neće biti nekih problema.

Posted in admin, php, scripts, windows | Tagged | 1 Comment

lvm snapshot mysql data dir

#!/bin/bash
 
(
echo "FLUSH TABLES WITH READ LOCK;"
echo "\! lvcreate -L +10G -s -n snap_userdata /dev/vol01/userdata"
echo "UNLOCK TABLES;"
) | mysql -u root
 
if [ -e /dev/vol01/snap_userdata ]; then
        mount /dev/vol01/snap_userdata /mnt/snap_userdata/
fi
Posted in admin, scripts | Leave a comment

Zaboravljeni bitcoin novčanik

Ovih dana se spominje restoran u Beogradu (Appetite) u kojem se račun može platiti u Bitcoinima, pa se setih da ja imam negde bitcoin novčanik.

Pre par godina kad sam imao ideju da se malo zanimam kopanjem bitcoina, malo sam testirao kako to funkcionishe i tada, sakupio neku beznačajnu svotu coina. Od čeka sam deo prebacio u novčanik, a deo je nesta sa poolom preko koga sam testirao kopanje. Tada je to bila neka beznačajna suma, bez ideje da se cimam kako to da kornvertujem u prave pare ili da ih nekako iskoristim… A pošto sad postoji restoran, ponadah se da možda odem na neku kaficu, onako malo zbog geeky osećaja :)

Skinem novu verziju Bitcoin-Qt novčanika, i skontam da imam tačno 1.5BTC, što po današnjem kursu je oko 1200USD :) Nešto što je pre dve godine bilo sića koja je zaostala tamo negde se u medjuvremenu protvorilo u malo više od nečeg za platiti kafu :) ))

Naravno ostaje pitanje, šta uraditi sa time, ostaviti da čekaju neka nova vremena ili možda konvertovati i potrošiti na nešto?

Posted in drustvo | Tagged | 4 Comments

Upload velikih fajlova preko PHPa

Upload fajlove u PHP je generlno uradjen na potpuno pogrešan nacin. Pretpostavka da ceo POST mora da stane u memoriju je sumanut zahtev.

Potencijalna reshenja zahtevaju promenu nacina na koji se fajl uploaduje, ili zamenu PHPa sa PERLom (npr) na server strani samo za procesiranje uploada.

Pre jedno godinu dana sam video zanimljiv nacin za komunikaciju embeded uredjaja sa web serverom. Ukratko: celo telo zahteva zavrshi u PHPu putem php://stdin handlera. I sad ostaje samo dilema kako to iskoristiti da browser misli da radi klasican upload (ecntype=”multipart/form-data”), a da PHP php ne iskoristi svoj interni mehanizam za pakovanje celog zahteva u memoriju i parserovanje. I reshenje postoji, upotrebom dva standardna Apache modula modifikujemo content-type requesta tako da ne bude multipart/form-data shto ujedno znaci da PHP nece parserovati. I to se moze raditi:

SetEnvIf content-type (multipart/form-data)(.*) NEW_CONTENT_TYPE=multipart/form-data-alternate$2 OLD_CONTENT_TYPE=$1$2
RequestHeader set content-type %{NEW_CONTENT_TYPE}e env=NEW_CONTENT_TYPE

Potom sve shto je potrebno, je PHP kod koji parserije multipart/form-data interno i bez smeshtanja u memoriju.

Provereno sa nekoliko browsera, potrebno je još testiranja, ali rešenje je vishe nego lako primenjivo i ne zahteva nikakvo modifikovanje ni browser koda, ni PHP scripte za upload. A to je omogućeno preloadom .php fajla.

php_value auto_prepend_file php-uploader.inc.php

Jedina modifikacija PHP parametra je potreba da vreme izvrsavanja scripte bude dovoljno veliko da bi klient sa sporom konekcijom mogao da uradi kompletan upload.

Source kod kompletnog reshenja: https://github.com/zsteva/php-uploader.

I kod mene na serveru test lokacija http://zsteva.info/upload

Posted in admin, linux, php | Leave a comment

Podešavanje privilegija nad LVM particijama

Zbog izolovanja pristupa, potrebno nam je promeniti default privilegije (root:disk 0660) nad odredjenim particijama, zapravo logičkim volumenima odredjene volumen grupe.

Potrebno je da korisnici grupe grp01 dobiju read/write nad /dev/vg01/part2.

Prvo da vidimo šta je zapravo /dev/vg01/part2:

zsteva@debian:~$ ls -la /dev/vg01/part2 
lrwxrwxrwx 1 root root 7 Sep 16 21:06 /dev/vg01/part2 -> ../dm-4

Kao što se vidi, to je simbolički link na /dev/dm-4.

zsteva@debian:~$ ls -la /dev/dm-4             
brw-rw---- 1 root disk 253, 4 Sep 16 21:06 /dev/dm-4

A /dev/dm-4 predstavlja block device sa minor, major brojevima 253, 4.

Debuging udev sistema, koji pravi simboličke linkove i podešava privilegije:

zsteva@debian:~$ sudo udevadm test /sys/dev/block/253\:4
run_command: calling: test
udevadm_test: version 164
This program is for debugging only, it does not run any program,
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.

parse_file: reading '/lib/udev/rules.d/50-udev-default.rules' as rules file
parse_file: reading '/lib/udev/rules.d/55-dm.rules' as rules file
add_rule: NAME="" is ignored, because udev will not delete any device nodes, please remove it from /lib/udev/rules.d/55-dm.rules:57
parse_file: reading '/lib/udev/rules.d/56-lvm.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-gnupg.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-kpartx.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-persistent-alsa.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-persistent-input.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-persistent-serial.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-persistent-storage-dm.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-persistent-storage-lvm.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-persistent-storage-tape.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-persistent-storage.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-persistent-v4l.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-qemu-system.rules' as rules file
parse_file: reading '/dev/.udev/rules.d/61-dev-root-link.rules' as rules file
parse_file: reading '/lib/udev/rules.d/61-mobile-action.rules' as rules file
parse_file: reading '/lib/udev/rules.d/64-md-raid.rules' as rules file
parse_file: reading '/lib/udev/rules.d/70-acl.rules' as rules file
parse_file: reading '/lib/udev/rules.d/70-hid2hci.rules' as rules file
parse_file: reading '/etc/udev/rules.d/70-persistent-net.rules' as rules file
parse_file: reading '/lib/udev/rules.d/75-cd-aliases-generator.rules' as rules file
parse_file: reading '/lib/udev/rules.d/75-net-description.rules' as rules file
parse_file: reading '/lib/udev/rules.d/75-persistent-net-generator.rules' as rules file
parse_file: reading '/lib/udev/rules.d/75-probe_mtd.rules' as rules file
parse_file: reading '/lib/udev/rules.d/75-tty-description.rules' as rules file
parse_file: reading '/lib/udev/rules.d/78-sound-card.rules' as rules file
parse_file: reading '/lib/udev/rules.d/79-fstab_import.rules' as rules file
parse_file: reading '/lib/udev/rules.d/80-drivers.rules' as rules file
parse_file: reading '/lib/udev/rules.d/85-hwclock.rules' as rules file
parse_file: reading '/lib/udev/rules.d/91-permissions.rules' as rules file
parse_file: reading '/lib/udev/rules.d/95-keyboard-force-release.rules' as rules file
parse_file: reading '/lib/udev/rules.d/95-keymap.rules' as rules file
parse_file: reading '/etc/udev/rules.d/95-my-lvm-perm.rules' as rules file
parse_file: reading '/lib/udev/rules.d/xen-backend.rules' as rules file
parse_file: reading '/lib/udev/rules.d/xend.rules' as rules file
udev_rules_new: rules use 27684 bytes tokens (2307 * 12 bytes), 17161 bytes buffer
udev_rules_new: temporary index used 18400 bytes (920 * 20 bytes)
udev_device_new_from_syspath: device 0x7fafd268dcc0 has devpath '/devices/virtual/block/dm-4'
udev_device_new_from_syspath: device 0x7fafd26761b0 has devpath '/devices/virtual/block/dm-4'
udev_device_read_db: device 0x7fafd26761b0 filled with db file data
udev_rules_apply_to_event: LINK 'block/253:4' /lib/udev/rules.d/50-udev-default.rules:1
udev_rules_apply_to_event: IMPORT 'dmsetup_env 253 4' /lib/udev/rules.d/60-kpartx.rules:12
util_run_program: 'dmsetup_env 253 4' started
util_run_program: '/lib/udev/dmsetup_env' (stdout) 'DM_UUID=LVM-lbhVtg7GsJChHSDJHYfbyX2XFwCtQTWei8AKiKZkjn1eHleETADez0k9ff1Kp9oV'
util_run_program: '/lib/udev/dmsetup_env' (stdout) 'DM_TABLE_STATE=LIVE'
util_run_program: '/lib/udev/dmsetup_env' (stdout) 'DM_STATE=ACTIVE'
util_run_program: '/lib/udev/dmsetup_env' (stdout) 'DM_NAME=vg01-part2'
util_run_program: 'dmsetup_env 253 4' returned with exitcode 0
udev_rules_apply_to_event: IMPORT 'kpartx_id 253 4 LVM-lbhVtg7GsJChHSDJHYfbyX2XFwCtQTWei8AKiKZkjn1eHleETADez0k9ff1Kp9oV' /lib/udev/rules.d/60-kpartx.rules:16
util_run_program: 'kpartx_id 253 4 LVM-lbhVtg7GsJChHSDJHYfbyX2XFwCtQTWei8AKiKZkjn1eHleETADez0k9ff1Kp9oV' started
util_run_program: '/lib/udev/kpartx_id' (stdout) 'DM_TYPE=raid'
util_run_program: 'kpartx_id 253 4 LVM-lbhVtg7GsJChHSDJHYfbyX2XFwCtQTWei8AKiKZkjn1eHleETADez0k9ff1Kp9oV' returned with exitcode 0
udev_rules_apply_to_event: GROUP 6 /lib/udev/rules.d/91-permissions.rules:4
udev_event_execute_rules: no node name set, will use kernel supplied name 'dm-4'
udev_device_update_db: created db file for '/devices/virtual/block/dm-4' in '/dev/.udev/db/block:dm-4'
udev_node_update_old_links: update old name, '/dev/mapper/vg01-part2' no longer belonging to '/devices/virtual/block/dm-4'
link_update: no reference left, remove '/dev/mapper/vg01-part2'
udev_node_update_old_links: update old name, '/dev/disk/by-id/dm-name-vg01-part2' no longer belonging to '/devices/virtual/block/dm-4'
link_update: no reference left, remove '/dev/disk/by-id/dm-name-vg01-part2'
udev_node_update_old_links: update old name, '/dev/disk/by-id/dm-uuid-LVM-lbhVtg7GsJChHSDJHYfbyX2XFwCtQTWei8AKiKZkjn1eHleETADez0k9ff1Kp9oV' no longer belonging to '/devices/virtual/block/dm-4'
link_update: no reference left, remove '/dev/disk/by-id/dm-uuid-LVM-lbhVtg7GsJChHSDJHYfbyX2XFwCtQTWei8AKiKZkjn1eHleETADez0k9ff1Kp9oV'
udev_node_update_old_links: update old name, '/dev/vg01/part2' no longer belonging to '/devices/virtual/block/dm-4'
link_update: no reference left, remove '/dev/vg01/part2'
udev_node_add: creating device node '/dev/dm-4', devnum=253:4, mode=0660, uid=0, gid=6
udev_node_mknod: preserve file '/dev/dm-4', because it has correct dev_t
udev_node_mknod: preserve permissions /dev/dm-4, 060660, uid=0, gid=6
node_symlink: preserve already existing symlink '/dev/block/253:4' to '../dm-4'
udevadm_test: UDEV_LOG=6
udevadm_test: DEVPATH=/devices/virtual/block/dm-4
udevadm_test: MAJOR=253
udevadm_test: MINOR=4
udevadm_test: DEVNAME=/dev/dm-4
udevadm_test: DEVTYPE=disk
udevadm_test: ACTION=add
udevadm_test: SUBSYSTEM=block
udevadm_test: DEVLINKS=/dev/block/253:4
udevadm_test: DM_UUID=LVM-lbhVtg7GsJChHSDJHYfbyX2XFwCtQTWei8AKiKZkjn1eHleETADez0k9ff1Kp9oV
udevadm_test: DM_TABLE_STATE=LIVE
udevadm_test: DM_STATE=ACTIVE
udevadm_test: DM_NAME=vg01-part2
udevadm_test: DM_TYPE=raid

Iz svega ovoga može svašta da se vidi, ali nas zanima ovo DM_NAME=vg01-part2. Pravljenjem fajla /etc/udev/rules.d/95-my-lvm-perm.rules sa sadržajem ćemo odabranom deviceu dodeliti drugu grupu:

ENV{DM_NAME}=="vg01-part2", GROUP="grp01"

Efekat može biti vidljiv odmah pokretanjem: sudo udevadm trigger komande.

Posted in admin, linux | Tagged , , , , | Leave a comment

Reverzni SSH tunel

Na svom računaru imate serversku aplikaciju koja zahteva da se konekcija napravi na njoj, a nemate javnu IP adresu, ili mogućnost da uradite port forward. Jedan od načina da obezbedite pristup “od spolja” do aplikacije je putem reverznog SSH tunela.

Potrebno nam je da imamo server koji ima javnu IP i slobodne portove koji su vidljivi (nisu zatvoreni firewallom), sa instaliranim OpenSSHom (linux serveri po defaultu ga imaju) i naravno admin account na njemu. U slučaju da nemate postojeći server, možete iskoristi neki jeftin VPS za te potrebe (već od 10-15 dolara godišnje).

Po defaultu remote port forward na serveru binduje localhost adresu, čime smo uskraćeni za pristup od spolja. Da bi smo to izbegli potrebno je na serveru modifikovati /etc/ssh/sshd_config.

GatewayPorts yes

I potom restartovati sshd:

/etc/init.d/sshd restart

Za potrebe tunela možemo koristiti neki od postojećih accounta na serveru ili napraviti novi sa:

adduser tunel

Sa client strane nam je potreban ssh client. I ako naprimer želimo da lokalni 5555 port forwardujemo na port 5555 na serveru. Sa Linuxa (u jednoj liniji):

ssh -g -R 5555:127.0.0.1:5555 -N -o ServerAliveInterval=10 
-o ServerAliveCountMax=2 tunel@server.domen.com

Argumenat -R 5555:127.0.0.1:5555 definiše šta forwardujemo. Prvi 5555 je port na serveru na kojem če čekati konekcije, 127.0.0.1 je adresa na koju će biti forwardovana konekcija ali sa lokalne strane (sa strane klienta) i drugi broj 5555 je port sa lokalne strane na koji će biti forwardovana.

Ako koristite windows, možete korititi plink.exe (u jednoj liniji):

plink.exe -N -keepalive 10 -R 0.0.0.0:5555:127.0.0.1:5555
tunel@server.domain.com

Argument -R 0.0.0.0:5555:127.0.0.1:5555 označava šta će biti forwardovano, 0.0.0.0 je bind adresa sa serverske strane, prva 5555 je port sa serverske strane na kojoj će se čekati konekcije. 127.0.0.1 adesa na koju ce se preusmeravati konekcija ali sa klientske strane, i drugi broj 5555 na koji port se preusmerava sa lokalne strane.

Krajnji rezultat, server.domen.com:5555 je vidljivo sa bilo kojeg računara na internetu, klienti koji treba da se nakače se kače na tu adresu, a SSH tunelom to preusmerava do našeg računara i pravi konekciju ka 127.0.0.1:5555. Dokle god je tunel otvoren to će funkcionisati tako. Imajte obzira na ograničenje brzine konekcije.

U slučaju da je port 5555 zauzet na serveru, nećete dobiti nikakvo upozorenje, a tunel neće raditi. Tako da ako nešto ne funkcioniše, probajte sa drugim portom.

Posted in admin, linux, network | Tagged , , , , | Leave a comment

GnuPG + vim enkripcija fajlova

Kratak guide kako da jednostavno koristite GnuPG i vim za transparentnu encripciju fajlova na disku.

Radite na linuxu, imate instaliran vim i gnupg, a mozda imate i gnupg-agent ako ne instalirajte i njega. Ako neshto od toga nemate a na ubuntu/debianu ste (apt-get install gnupg vim gnupg-agent ce vam pomoci).

Plugin za vim sa github vim-gnupg ubaciti u ~/.vim/plugins/.

Pravljenje gnupg kljuca: gpg –gen-key

I potom vim file.asc otvara vim sa dva prozora, gornji u koji upisemo primaoca, u našem slucaju to smo mi, tako da je potrebno navesti sopstvenu email adresu, kad snimimo buffer (ZZ) ostane nam samo donji prozor da u njemu upisemo sadrzaj fajla.

Na dalje otvaranjem tog fajla vim ce decryptovati sadrzaj, menjamo ga i na disk se snima enkriptovan. Passphase unosimo preko gnupg-agenta.

Da svaki put kod pravljenja ne bi unosili svoju email adresu možemo u ~/.vimrc dodati sledeće:

let g:GPGDefaultRecipients = ["user@domen.com"]
Posted in linux | Tagged , , , | Leave a comment

Kolko je zapravo WiFi brz

Juče sam merio dva brzinu mreže preko dva access pointa, i iskreno rečeno razočaran… Meni wirelessi uglavnom lepo služe svrsi, i lepo rade (ponekad i ponegde neki pravi problem, ali se to da rešeti), ali da su ovoliko spori, toga nisam bio svestan sve ove godine :) Opet možda ja negde grešim…

Mereni su stari Linksys WRT54GL (stari poznati znalac svih linuxaša) i TpLink WR842ND (opet AP linux friendly, ovog puta sa OpenWrt firmwarelom u sebi). Merenje protoka radjeno sa mog Lenovo EDGE E330 laptopa, Intel Wireless-N 2230.

Linksys WRT54GL:

zsteva@edge:~$ nuttcp ROUTER
   17.0821 MB /  10.31 sec =   13.8982 Mbps 3 %TX 1 %RX 0 retrans 6.78 msRTT
zsteva@edge:~$ nuttcp -r ROUTER
   14.9637 MB /  10.28 sec =   12.2107 Mbps 0 %TX 7 %RX 0 retrans 30.18
msRTT
Testing from Serbia BroadBand-Srpske Kablovske mreze (.....35)...
Selecting best server based on ping...
Hosted by TARGO Telekom (Belgrade) [0.52 km]: 26.306 ms
Testing download speed........................................
Download: 12.71 Mbit/s
Testing upload speed..................................................
Upload: 3.46 Mbit/s

TpLink WR842ND

zsteva@edge:~$ nuttcp ROUTER
   39.4027 MB /  10.01 sec =   33.0125 Mbps 7 %TX 3 %RX 0 retrans 42.14
msRTT
zsteva@edge:~$ nuttcp -r ROUTER
   44.2157 MB /  10.19 sec =   36.3984 Mbps 1 %TX 12 %RX 0 retrans 32.84
msRTT
Testing from Serbia BroadBand-Srpske Kablovske mreze (......35)...
Selecting best server based on ping...
Hosted by TARGO Telekom (Belgrade) [0.52 km]: 30.041 ms
Testing download speed........................................
Download: 32.35 Mbit/s
Testing upload speed..................................................
Upload: 3.61 Mbit/s

Za poredjenje isto merenje sa 100MBps etherneta:

zsteva@edge:~$ nuttcp ROUTER
  113.4018 MB /  10.15 sec =   93.7484 Mbps 2 %TX 9 %RX 0 retrans 0.45 msRTT
zsteva@edge:~$ nuttcp -r ROUTER
  113.6553 MB /  10.17 sec =   93.7781 Mbps 2 %TX 8 %RX 0 retrans 0.47 msRTT
Testing from Serbia BroadBand-Srpske Kablovske mreze (.....35)...
Hosted by TARGO Telekom (Belgrade) [0.52 km]: 28.292 ms
Testing download speed........................................
Download: 38.72 Mbit/s
Testing upload speed..................................................
Upload: 3.84 Mbit/s
Posted in admin, linux, network | Tagged , , | Leave a comment

Migracija mysql servera

Migracija mysql servera sa jednog servera na drugi podrazumeva: kreiranja baza i podesavanje privilegija na novom, kao i import exporta sa starog. Priprema exporta bazi je jednostavna, ali ako ih ima dosta scripta moze pomoci. Ja obično imam urednu dokumentaciju sa SQL queriima za pravljenje baza i dodavanje korsnika/privilegija, ali ponekad je zgodnije uraditi export i toga. Dve scripte za pomoć oko exporta.

export_create_db_and_grants.sh – pravi create database i grant upite za pravljenje baza i dodeljivanja usera/privilegija na novom serveru:

#!/bin/bash
 
AUTH="-u root -ppassword"
 
echo "SELECT Concat('create database ', SCHEMA_NAME, ';') FROM INFORMATION_SCHEMA.SCHEMATA where SCHEMA_NAME NOT IN ('mysql', 'information_schema');" \
	| mysql $AUTH --silent --skip-column-names
 
echo 
 
echo "select concat('show grants for ', User, '@\\'', Host, '\\';') from user where User != 'debian-sys-maint';"  \
	| mysql $AUTH mysql --silent --skip-column-names \
	| mysql $AUTH --silent --skip-column-names \
	| sed -e 's/$/;/'

export_all_db.sh – export svih baza u ime_baze.sql fajl:

#!/bin/bash
 
AUTH="-u root -ppassword"
 
echo "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA where SCHEMA_NAME NOT IN ('mysql', 'information_schema');" \
	| mysql $AUTH --silent --skip-column-names \
	| while read DB; do
		echo "Exporting ${DB} to ${DB}.sql"
		mysqldump $AUTH $DB > ${DB}.sql
	done

Downaload: export_create_db_and_grants.sh export_all_db.sh

Posted in admin, linux | Tagged , , , | Leave a comment

XEN network performance

XEN na squeezy debianu. Guest je debian u PV modu.

dom0 -> domU

external 100Mbs na dom0 (host)

external na domU

Posted in admin, linux, network | Tagged , , , | Leave a comment