listopad 14

Jak używać SCP?

Secure copy (ang. bezpieczne kopiowanie) lub SCP oznacza bezpieczny transfer plików pomiędzy lokalnym a zdalnym lub między zdalnymi komputerami, używając protokołu Secure Shell (SSH). Skrót SCP odnosi się do dwóch powiązanych ze sobą rzeczy: protokół SCP oraz polecenie scp.

Kopiowanie pliku ze zdalnej maszyny na lokalną:

scp uzytkownik@zdalny.com:plik.txt /home/slav

Kopiowanie z hosta lokalnego na zdalny

scp plik.txt uzytkownik@zdalny.com:/katalog/docelowy

Kopiowanie katalogu z maszyny lokalnej na zdalnego hosta

scp -r katalog uzytkownik@zdalny.com:/katalog/docelowy

Kopiowanie z jednego zdalnego hosta na drugi

scp uzytkownika@host.com:/scieka/plik.txt uzytkownik2@drugi.com:/docelowy

Kopiowanie dwóch plików z lokalnego hosta na docelowy

scp plik1.txt plik2.txt uzytkownika@zdalny.com:L/katalog

Kopiowanie pliku na innego hosta po innym porcie niż domyślny

scp -P 2211 plik.txt uzytkownik@host.com:/katalog

Kopiowanie wielu plików na raz ze zdalnego hosta

scp uzytkownik@zdalny.com:/katalog/{plik1.txt,plik2.txt} .

I dwie sztuczki na przyspieszenie SCP

Domyślnie scp korzysta z algroytmu Tiple-DES cipger do kodowania informacji. Jest on dosyć powolny, jeżeli zmienimy go na Blowfish można uzyskać spore przyspieszenie. Wystarczy dodać parametr -c

scp -c blowfish plik.txt zdalny@serwer.com:~

Druga opcja to -C która uruchamia kompresję przesyłanych plików. Optymalnie jest więć skorzystać z obu opcji:

scp -c blowfish -C plik.txt uzytkownik@zdalny.com:~

Ostatni element którego mi brakowało, to użycie klucza publicznego do logowania:

scp -o IdentityFile=klucz.pem

 źródło: hyperx.org

Aktulizacja 2018

Mac OS X – kompresja:

scp -C

Klucz

-i /.../xxx.pem
Kategoria: devBlog | LEAVE A COMMENT
sierpień 9

Dekompresja / Kompresja zip i unzip dzielenie i scalanie plików pod konsolą

Zwykła kompresja/dekompresja pliku dla przypomnienia

Prosta kompresja ZIP do pliku archiwum.zip katalogu skompresuj_mnie

user@local:$ zip -r -9 archiwum.zip /skompresuj_mnie

Opcje:
-r : kompresuje pliki włączając w to podkatalogi ( rekursywnie )
-X : nie bierze pod uwagę plików niewidocznych typu: .Spotlight-V100, .DS_Store itp.
-9 : stopień kompresji ( 0 – brak kompresji, 9 – maksymalna kompresja )

Dekompresja:

user@local:$ unzip archiwum.zip

Dzielenie pliku na mniejsze kawałki

user@local:$ zip -s 1024m -r -9 archiwum.zip /sciezka/duzy_plik.app

Opcja -s z parametrem liczbowym – w naszym przypadku 1024m oznacza, że pliki mają być dzielone na porcje 1024MB. Literka m na końcu liczby oznacza oczywiście MegaBajty.

Scalanie podzielonych plików całość

Tutaj sprawa ze scalaniem plików w jedność nieco się komplikuje, gdyż unzip nie ma takiej opcji aby dekompresował plik po pliku ze scalaniem.

Ale są inne możliwości, pierwsza z nich to wykorzystanie naszego programu zip do scalenia plików w jeden plik zip:

user@local:$ zip -FF archiwum.zip –out archiwum-full.zip

Gdzie archiwum.zip to pierwszy podzielony plik, kolejne pliki mają końcówki z1, z2, itd.

Druga opcja, polega na scaleniu ( konkatenacji ) plików za pomocą cat:

user@local:$ cat archiwum.z* > archiwum-full.zip

Teraz mając scalone archiwum, możemy już normalnie zdekompresować plik, tak jak to pokazałem na samym początku tego postu.

 

źródło: http://systemy.mor.pl/dekompresja-kompresja-zip-i-unzip-dzielenie-i-scalanie-plikow-pod-konsola/

Kategoria: devBlog | LEAVE A COMMENT
luty 14

klasy w tr

Pętla for pobierze nam wszystkie pliki w danym katalogu, po czym poleceniem mv oraz tr zmienimy im nazwę. W nawiasach kwadratowych podany jest zakres znaków jakie mają zostać zamienione. Możemy delikatnie zmodyfikować skrypt i wykorzystać klasy znaków dla polecenia tr:

Kod:
for i in `cat $1 | grep -v ” ” | sort | uniq`; do c=`echo $i | tr [:upper:] [:lower:]`; echo $c >>$1-wynik.txt done;

W tym wypadku wykorzystując klasy upper i lower Wykorzystując klasy możemy określić jakie zakresy znaków mają być brane pod uwagę. Mamy do dyspozycji:

  • alnum – znaki alfanumeryczne
  • alpha – litery
  • cntrl – znaki kontrolne
  • digit – cyfry
  • graph – znaki graficzne, bez spacji
  • lower – małe litery
  • print – znaki pisarskie w tym spacja
  • punct – znaki interpunkcyjne
  • space – spacje, białe znaki
  • upper – wielkie litery
  • xdigit – znaki hexadecymalne

źródło: http://osworld.pl/masowa-zmiana-nazw-plikow-pisanych-wielkimi-literami-na-male/

Kategoria: devBlog | LEAVE A COMMENT
styczeń 9

Bind9: named "max open files (1024) is smaller than max sockets (4096)"

Po upgrade Debiana z Etch do Lenny bind9 w logach możemy zobaczyć komunikat: „max open files (1024) is smaller than max sockets (4096)”.
Na google szukałem chwilę, ale znalazłem.
Teraz też pomogło:

Kod:
ulimit -HSn 8192
# /etc/init.d/bind9 restart

no i w logach mamy:

Kod:
using up to 4096 sockets

Misja wykonana!

Źródło: http://www.antynet.pl/node/44

Podczas poszukiwań znalazłem rozwiązanie podczas uruchomienia systemu: dla użytkowników – http://ss64.com/bash/limits.conf.html
a dla administratora w pliku .bash_profile: http://ss64.com/bash/ulimit.html
Za powyższymi linkami:

Kod:
# cat /etc/security/limits.conf
[...]
* soft nofile 8192
* hard nofile 8192
@root soft nofile 8192
@root hard nofile 8192
@bind soft nofile 8192
@bind hard nofile 8192

i działa podczas startu.

Kategoria: devBlog | LEAVE A COMMENT
czerwiec 25

Eksport i import bazy danych mysql

Eksport bazy danych:

Kod:
mysqldump -B testowa -u root -p > dump_testowa.sql

– system poprosi o hasło
– potrzebne są odpowiednie uprawnienia, ale root powinien je mieć

Źródło: kody.wig.pl

Wersja spakowana do .sql.gz:

Kod:
mysqldump -B testowa -u root -p | gzip > dump_testowa.sql.gz

I tak mamy pełny instruktaż dot. importu (zrzutu, dumpu) bazy danych.

Import bazy danych:

Kod:
mysql -u root -p < dump_testowa.sql

Kategoria: devBlog | LEAVE A COMMENT
maj 27

Zmiana uprawnień katalogów i plików – hurtowo

Chciałem zmienić prawa do katalogów i plików jednocześnie tak aby katalog miał inne prawa niż plik w nim znajdujący się. Zwykłe chmod XXX * -R nie było tym czego potrzebowałem. Z pomocą przyszły dwa polecenia, find oraz xargs.

Kod:
find . -type f -print0 | xargs -0 chmod XXX find . -type d -print0 | xargs -0 chmod XXX

odpowiednio:
z parametrem type f – pliki (file)
z parametrem type d – katalogi (dir)

poskutkowało i działa :-)

Aby uprawnienia podane działały wgłęb podanej ścieżki należy ustawić poziomy zagłębień do katalogów: mindepth i maxdepth.
W przykładzie minimalny poziom 1, maksymalny poziom 100 (100 katalogów wgłęb):

Kod:
find . -mindepth 1 -maxdepth 100 -type f -print0 | xargs -0 chmod XXX find . -mindepth 1 -maxdepth 100 -type d -print0 | xargs -0 chmod XXX

i działa :-)

Kategoria: devBlog | LEAVE A COMMENT
styczeń 27

Apache Bug 2.2.11

W razie jakbyśmy zobaczyli w logach serwera Apache:

[notice] child pid 22527 exit signal Segmentation fault (11)

Jest to błąd lub też niekompatybilność serwera Apache z nowym jądrem/kernelem. Należy wydać komendę:

echo 1024 > /proc/sys/fs/epoll/max_user_instances

Gdzie:

  • 1024 jest liczbą większą od parametru MaxClients w Apache.

…i problem znika.

styczeń 15

Zmiana nazwy maszyny w linuxie

W poradniku http://pomoc.ovh.pl/ZmianaNazwyMaszyny jest opisane jak zmieniać nazwę maszyny dla RedHata. Jak to w Linux Debianie się ma? Wystarczy:

hostname [maszyna]
[vi] /etc/hostname: [maszyna]
[vi] /etc/hosts: [ip maszyny] [maszyna]
[vi] /etc/mail/local-host-names: dopisać [maszyna]
cp /etc/mail/sendmail.cf /etc/mail/sendmail.cf_
[vi] /etc/mail/sendmail.mc: MASQUERADE_AS(`........

zmienić na:

MASQUERADE_AS(`[maszyna]`)dnl

na koniec wystarczy:

/etc/init.d/networking restart
/etc/init.d/sendmail restart

Wytłumaczenie:

  • zamiast [vi] można użyć innego edytora tekstu np. standardowego w Midnight Commander – komenda mcedit,
  • za [maszyna] podstawić swoją nazwę kanoniczną (nazwę hosta),
  • za [ip maszyny] podstawić fizyczne ip dla danego serwera.

i działa.

Kategoria: devBlog | LEAVE A COMMENT
wrzesień 4

apache2 + php4/php5/php7 + mysql5

Najprościej jest zainstalować przez jedną komendę – ale nie zawsze tak moża, bo pakietów brakuje. Poniżej przedstawiam wersję skróconą:

apt-get install apache2 mysql-server-5.0 php4-*

Lecz niestety brakuje tu czasem pakietów php4. Poniżej przedstawiam wersję wydłużoną:

php4?

apt-get install apache2 mysql-server-5.0
apt-get install php4-sqlite php4-curl php4-uuid php4-kadm5 php4-interbase php4-mhash php4-pgsql php4 php4-xslt php4-imap php4-domxml php4-gd php4-pspell php4-ldap php4-tclink php4-ps php4-mcal php4-mysql php4-json php4-mcrypt php4-recode php4-imagick php4-ming php4-sqlite3 php4-odbc php4-apd php4-cgi php4-pear php4-cli php4-dev php4-gd2 php4-gd php4-suhosin php4-idn php4-auth-pam php4-lasso php4-common php4-librdf php4-memcache php4-mapscript php4-sybase libapache-mod-php4 php4-snmp php4-xapian libapache2-mod-php4 php4-clamavlib php4-syck php4-spplus

[Edit 4 września 2008 o 14:03]
php5?

apt-get install apache2 mysql-server-5.0
apt-get install memcached php5 libapache2-mod-php5 php5-adodb php5-common php5-curl php5-dev php5-gd php5-imagick php5-imap php5-intl php5-ldap php5-mcrypt php5-memcache php5-mysql php5-pgsql php5-pspell php5-snmp php5-sqlite php5-xmlrpc php5-xsl php5-exactimage php5-ffmpeg php5-gdcm php5-vtkgdcm php5-lasso php5-mapscript php5-ming php5-geoip php5-memcached php5-ps php5-radius php5-rrd php5-sasl php5-svn php5-tokyo-tyrant php5-dbg php5-enchant php5-fpm php5-gmp php5-interbase php5-odbc php5-recode php5-sybase php5-tidy php5-librdf php5-remctl php5-xcache php5-xdebug

[Edit 2023-03-04 20:29]
php7? A dokładniej PHP7.4?

apt-get install apache2 mysql-server-5.0
apt-get install memcached php7.4 libapache2-mod-php7.4 php7.4-bcmath php7.4-bz2 php7.4-cgi php7.4-cli php7.4-common php7.4-curl php7.4-dba php7.4-dev php7.4-enchant php7.4-fpm php7.4-gd php7.4-gmp php7.4-imap php7.4-interbase php7.4-intl php7.4-json php7.4-ldap php7.4-mbstring php7.4-mysql php7.4-odbc php7.4-opcache php7.4-pgsql php7.4-phpdbg php7.4-pspell php7.4-readline php7.4-snmp php7.4-soap php7.4-sqlite3 php7.4-sybase php7.4-tidy php7.4-xml php7.4-xmlrpc php7.4-xsl php7.4-zip

I działa!

Kategoria: devBlog | LEAVE A COMMENT
sierpień 28

sshd: info po podaniu loginu

Za konfigurację sshd odpowiedzialny jest plik /etc/sshd_config. A więc robimy tak:

mcedit /etc/sshd_config

dopisujemy poniższą linijkę:

Banner /etc/ssh/sshd_banner

tworzymy plik o podanej nazwie:

touch /etc/ssh/sshd_banner

z porządaną treścią zakończoną klawiszem ENTER (_nową pustą linią na końcu całego pliku_), później wystarczy:

/etc/init.d/sshd restart

zalogować się ponownie i po podaniu loginu, przed wpisaniem hasła, widzimy zawartość pliku /etc/ssh/sshd_banner.

Kategoria: devBlog | LEAVE A COMMENT