2016 m. gruodžio 31 d., šeštadienis

Naujųjų metų rezoliucija

Ar pasiteisino naujųjų metų rezoliucija? : [Bus atnaujinta 2017-12-31]

Dalykai kuriuos prisižadu padaryti per ateinančius metus:
  • Elektronikos projektą, kuriuo galima nustatyti, REM miego būseną.[*]  -- X
  • Visus metus kruopštiai mokytis python programavimą kalbą. -- (dalinai)
    Užbaigti skaityti: "Learning Python, 5th Edition" ir kitas knygas apie python, kurios laukia savo eilės. -- V(dalinai)
  • Išmokti naudotis Linux Kali.[*]  -- X
Šie vaizdo įrašai turėtų pagelbėti, kai tau prireiks motyvacijos, ar nežinosi kodėl ne-sekasi daryti, ką esi užsibrėžęs.



Šitą pažiūrėk, kai nuspręsi pasiduoti:

Ną, ką. Sekmės! Susitiksim, kitais metais.


Atnaujinimas 2018-01-01

Pasiteisino keli dalykai dalinai. Tai python kalbos mokymasis, bet nesakyčiau, kad mokiausiai kiekvieną dieną kruopščiai. Tačiau padariau ženklų pokytį.
"Learning Python, 5th Edition" knygos visos neperskaičiau, skaičiau tam tikromis dalimis, bet galima sakyti, kad perskaičiau didžiąją dalį.

Kokios buvo kliūtis?
Jei dalykas atsibosdavo, atidėdavau ir užmiršdavau apie tai. Tęstinumo nebuvimas. Kaip užkirsti kelia šiam tęstinumo nebuvimui? Kelis kartus per savaitę, apžvelgti elgesį. Atsakyti į klausimus:

  • Ką dariau?
  • Ko nedariau?
  • Ką darysiu?
  • Kokios yra problemos?
  • Kaip jas išspręsti?



Dalykai, kuriuos prisižadu padaryti per ateinančius metus. [Bus atnaujinta 2018-12-31]
Atnaujinta 2019-05-17 d. (vakar prisiminiau :D) tuo pačiu galima iškelti klausimą, kaip prisiminti.

  • Susirasti gf - V
    • Nfp - V(dalinai)
  • Neberūkyti/Nebegerti - V(dalinai)
  • Kasdien medituoti -- X
  • Išmokti sąmoningai sapnuoti -- X
    • Suformuoti sapnų žemėlapį -- V(dalinai esu pradėjęs daryti, bet pastaruoju metu nepildau)
Tarp dalykų, kurių norėjau buvo tokių kurie kirtosi tarpusavyje, gavus vieną, kitas išslysdavo. Nebuvo integracijos tarp tikslų. Galvoju susitelkti ties keliais dalykais, tai 


2019 tikslai:

Dalykai, kuriuos prisižadu padaryti per ateinančius metus. [Bus atnaujinta 2019-12-31]

  • Meditacija (buvau vipasanoj)
  • Savęs pažinimas ✅ ( tebevykstantis procesas)
  • Išmokti sąmoningai sapnuoti  ❌

2020 tikslai:

Susirasti darbą ?
Susiransti merginą ?
Išsilaikyti teises 

2021 tikslai:

  • Maratonas. ❌
  • Elektrinė mašina.?
  • Išmokti sąmoningai sapnuoti. ❌
  • Išmokti matyti energetinius faktus. Kaip juda energija. ❌
  • Padėt prieiti iki protą nunešančio jausmo. ❌
 
 

2022 tikslai:

  • Kuopščiai išanalizuoti Castanedos Knygas
    Išmokti sąmoningai sapnuoti

 

Linux pamokos

https://linuxjourney.com/ - Linux-fu komandos ir pamokos.
https://www.codecademy.com/ - Interaktyvios pamokos.
https://www.edx.org/ - Nemokamas edx linux kursas.

http://overthewire.org/wargames/ - Linux wargames.

2016 m. gruodžio 28 d., trečiadienis

Aplikacijų atvaizdavimas ir garso valdymas

Problema 1:
Siunčiant DISPLAY=:0 espeak "test" komandą metą klaidą, kadangi vartotojas nepridėtas prie audio grupės:
No protocol specified
xcb_connection_has_error() returned true
...

Sprendimas:
Pridedam www-data į audio grupę:

$ sudo adduser www-data audio
$ sudo adduser www-data pulse
$ sudo adduser www-data pulse-access

Problema 2:
Prie kompiuterio prijungtos kolonėlės ir monitorius (su integruotomis kolonėlėmis) hdmi jungtimi. Siunčiant komandas, garsas girdisi ne į pagrindines kolonėles, bet per monitorių.

Patikrinam garso įrenginius:
$ cat /proc/asound/cards 
 0 [SB             ]: HDA-Intel - HDA ATI SB
                      HDA ATI SB at 0xfe8f4000 irq 16
 1 [HDMI           ]: HDA-Intel - HDA ATI HDMI
                      HDA ATI HDMI at 0xfe99c000 irq 32

Kaip sužinoti kuris įrenginys groja?

$ pacmd list-sinks  | egrep "index|state|alsa.card_name"
    index: 0
state: RUNNING
alsa.card_name = "HDA ATI HDMI"
    index: 13
state: SUSPENDED
alsa.card_name = "HDA ATI SB"

Sprendimas:
Šis scenarijus permes visą garsą iš hdmi į kolonėles. Galima pasirinkti, tam tikrą garso įvestį  ir tik ją persiųsti į kitą įrenginį.


#!/bin/bash

SINK=`pacmd list-sinks | grep '  index' |  awk -F": " {'print $2'}`
pacmd set-default-sink ${SINK}
pactl list short sink-inputs | awk '{ print $1 }' | while read sound_input
do
    
    pacmd move-sink-input ${sound_input} ${SINK}
done


Garso įjungimas/išjungimas:
SINK=`pacmd list-sinks|grep  '  index'| awk '/index:/{ print $2 }'` #Surandame veikiantį garsi įrenginį
pactl set-sink-mute $SINK toggle #Kontroliuojam garsą šiame įrenginyje

Tiesioginis garso siuntimas į kolonėles:
$ espeak "Wisdom begins in wonder. " 10 -w wav --stdout > test.wav && aplay  test.wav -v -V mono|stereo # Su garso indikacija

Grojimas papildant tekstą
$ espeak "Appending new text" -w wav --stdout >> test.wav && aplay test.wav

Grafinių aplikacijų siuntimas:

Tam, kad turėtume galimybę siųsti grafines aplikacijas, turime:
  • Paleisti xhost + komandą, kuri duos leidimą jungtis prie X serverio.
  • Murodyti  x11 aplinkos kintamąjį.
$ echo $DISPLAY # Sužinome savo x11 aplinkos kintamąjį
:0

Iš programėlės siunčiame grafines aplikacijas į x11 aplinką:
DISPLAY=:0 glxgears 
DISPLAY=:0 espeak "test" 

Įvykdyti komandos, kuriai reikalingos sudo teisės nepavyks. Turime vartotojui suteikti papildomasteises sudoers dokumente.
$ sudo visudo || sudo nano /etc/sudoers
www-data  ALL = NOPASSWD: /sbin/programos1, /sbin/programa2 # Pridedam šį įrašą, kad gautume prieiga prie nurodytų programų


user_name ALL=(ALL) NOPASSWD: /sbin/poweroff, /sbin/reboot, /sbin/shutdown #Perkrovimo teisės suteikimas


Garso siuntimas į dvejus įrenginius:


$ sudo apt-get install paprefs


Pasileidus komandą einam į Simultaneous Output -> ir Pažymim Varnelę

Kaip padaryti, kad kiekvieną kartą užsikrovus, nustatymai pasiliktų tokie patys

Perkraunam pulse audio
$ systemctl --user restart pulseaudio.service

Ir nustatom output ant keliu įrenginių
$ pavucontrol


2016 m. gruodžio 19 d., pirmadienis

Linux prisijungimo pradžios failai

Abonentui prisijungus prie Linuxų yra skaitomi 3 failai. Jei kuris nors iš jų egzistuoja, sustojama ties juo ir esantys žemiau netikrinami.

  1.  ~/.bash_profile
  2.  ~/.bash_login
  3.  ~/.profile 


Pvz, jei yra tik ~/.profile.  Jame nurodyta, patikrinti konsolės interpretatorių.
Jei naudojam bash'a, vykdomas  .bashrc failas. 

if [ -n "$BASH_VERSION" ]; then #tikrinama ar naudojamas bash
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then #tikrinama ar egzistuoja toks failas
        . "$HOME/.bashrc" # pridedam .bashrc
    fi
fi

2016 m. gruodžio 18 d., sekmadienis

Kaip pašalinti triukšmą iš garso įrašo?

Jums reikės atsisųsti:
Audacity - nemokamas garso failų redaktorius.

Veiksmai:
  1. Pridedam garso įraša: File->Import-Audio
  2. Pažymime triukšmingą įrašo vietą.Nuotraukoje matome su Audacity programa, pažymėtą triukšmingą garso vietą, kurią norime pašalinti
  3. Iškviečiam meniu Effect->Noise Redution ir pasirenkam Get Noice ProfileNuotraukoje matomas Noice Reduction langas, Audacity programoje, kuriame paryškintas Get Noise Profile mygtukas
  4. Pažymime visą garso įrašą, nuspaudžiant:  Ctrl+A.
  5. Dar kartą iškviečiam  Effect->Noise Redution meniu,  šį kartą, spaudžiame OK.Matome audacity programą, su atidarytu Noice Reduction meniu, kuriame jau gautas garso profilis, paryškintas OK mygtukas
Programa automatiškai pertvarkis garso įrašą, pašalinant pažymėtą triukšmo profilį iš pasirinktos garso vietos.

Gavus triukšmo profilį, jį galima pritaikyti pakartotinai su Ctrl + R klavišų kombinacija.


Patarimai:

Kitas būdas kaip pašalinti garsą su spektrograma.


2016 m. gruodžio 15 d., ketvirtadienis

App Inventor 2 vietiniame serveryje

Instrukcija skirta Ubuntu 16.04

Diegiam reikalingus paketus, bibliotekas ir atnaujinimus

$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt update
$ sudo apt install ant git python-software-properties -y
$ sudo apt install oracle-java7-installer -y
$ sudo apt install lib32z1 lib32ncurses5 zlib1g:i386 libncurses5:i386 libstdc++6:i386  -y

Siunčiames appinventor pirminį kodą
$ cd /home/$USER/Documents && git clone https://github.com/mit-cml/appinventor-sources

Kuriame appinventos slaptą kodą(reikalingas kompiliavimui)
$ cd /home/$USER/Documents/appinventor-sources/appinventor && ant MakeAuthKey

Kompiliuojam appinventor'ių
$ cd /home/$USER/Documents/appinventor-sources/appinventor && ant

Atsisiunčiam AppEngine

Servisų paleidimas
Paleidžiam appengine serverį
$ cd /home/$USER/Documents/appengine-java-sdk/bin && ./dev_appserver.sh --port=8888 --address=0.0.0.0 /home/$USER/Documents/appinventor-sources/appinventor/appengine/build/war

Paleidžiam aplikacijų  kūrimo serverį
$ cd /home/$USER/Documents/appinventor-sources/appinventor/buildserver && ant RunLocalBuildServer

Appinventoriaus sąsaja su USB emuliatoriumi ar Android įrenginiu prijungtu per USB paleidžiama, atsisiuntus aiStarter programą, komanda:
/usr/google/appinventor/commands-for-Appinventor/aiStarter

Lokalus serveris prieinamas:
$ localhost:8888

2016 m. gruodžio 14 d., trečiadienis

Kaip supaprastinti jungimasi su ssh?

Hosts dokumente,  yra įmanoma susieti IP adresus su pavadinimais.

$ cat /etc/hosts
192.168.1.1 ip

Jungimasis per ssh, tereikia įvesti vartotojo vardą ir  susietą pavadinimą iš hosts failo.
$ ssh vartotojas@ip 


Kaip pridėti ssh prisijungimą prie adresyno?

Jei neegzistuoja, sukuriam ~/.ssh/config failą su mėgstamiausiu teksto redaktoriumi.

Šį failą aprašome, tokiu būdu:
Host maršrutizatorius
    HostName 192.168.11.1
    Port 2222
    User root

Dabar jungiantis belieka įvesti šią komandą:
$ ssh maršrutizatorius


Kiti būdai kaip tvarkyti ssh prisijungimus

Audra - audra yra komandinės eilutės įrankis, skritas valdyti ssh prisijungimus.

2016 m. gruodžio 13 d., antradienis

Kaip paleisti ISO failą tiesiogiai iš kietojo disko?

Taip, yra galimybė paleisti .iso failus, per grub, neperkelinėjant į USB.

Paprastai kalbant "Grub" yra programa, kuri leidžia pasirinkti su kuria operacine sistema vartotojas nori dirbi.


Jums reikės:
  1. ISO failo.
  2. Grub Unified Bootloader'io, 2 versijos
Veiksmai:

Atsidarom /etc/grub.d/40_custom  failą su mėgstamiausiu failo redaktoriumi ir pakeičiam paryškintas eilutes(žemiau pavyzdys).
$ vi /etc/grub.d/40_custom


Randam .iso failuose kelia iki vmlinuz ir initrd failų.
$ 7z l ~/Downloads/lubuntu-16.10-desktop-amd64.iso | egrep "initrd|vmlinuz"
2016-10-20 03:45:20 .....     28172280     28172280  live/initrd.img
2016-10-20 03:45:20 .....      4104232      4104232  live/vmlinuz

Diskų numeravimas

Žemiau matom, kaip skiriasi grub'o disko apibūdinimas:
hd0msdos1
/dev/sda/dev/sda1

hd1 - tai antra particija /dev/sdb
hd1msdos1
/dev/sdb/dev/sdb1

Ir taip toliau hd2, butų /dev/sdc diskas, reikia atkreipti dėmesį, kad grub skaičiuoja diskus nuo 0.

Naudojant $ sudo fdisk -l komanda pasižiūrim diskų pavadinimus ir atitinkamai atliekam pakeitimus.

Belieka atnaujinti grub. Į terminalą įvedam komandą:
$ sudo update-grub


nuotraukoje matomas grub langas su naujais įrašais
Pasikeitęs grub meniu


40_custom pavyzdys:

exec tail -n +3 $0
# Šis failas leidžia užkrauti iso failus iš hdd
# Meniu įrašus pridedam iš apačios
# "exec tail" komanda, nurodanti grub'ui, nuo kurios eilutės pradėti vykdyti komandas 

menuentry "Lubuntu 16.10 iš Linuxų particijos" {
        set isofile="/home/sup/Downloads/lubuntu-16.10-desktop-amd64.iso"
        loopback loop (hd1,msdos1)$isofile
        linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noprompt noeject
        initrd (loop)/casper/initrd.lz 
}

menuentry "Ubuntu 16.04 iš kito kietojo disko" {
        set isofile="/iso/ubuntu-16.04.1-desktop-amd64.iso"
        loopback loop (hd0,msdos1)$isofile
        linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noprompt noeject
        initrd (loop)/casper/initrd.lz 
}


menuentry "Kali" {
    insmod ntfs
    insmod iso9660

      set isofile="/iso/kali-linux-2016.2-amd64/kali-linux-2016.2-amd64.iso"
      loopback loop (hd0,msdos1)$isofile
      linux (loop)/live/vmlinuz boot=live noconfig=sudo username=root hostname=kali findiso=$isofile debug --verbose nomodeset
      initrd (loop)/live/initrd.img
    }

Grub nustatymus kitoms distribucijoms rasi čia.
Ačiū madhur už grub'o Kali linux nustatymus.

2016 m. gruodžio 11 d., sekmadienis

DDWRT - duomenų dalinimasis lokaliam tinkle

Pirmiausiai prie maršrutizatoriaus, prijungiam USB laikmeną.

Paruošiam diską.
# fdisk /dev/sda #Numatytieji nustatymai nustatymai
# mkfs.ext4 /dev/sda1 #Įrašom failų sistemą


Jungiames prie DD-WRT ir konfiguruojam USB:

DD-WRT USB
DD-WRT USB konfiguraciją


Bendrinam USB lokaliame tinkle, įjungę samba:
DD-WRT samba
DD-WRT NAS konfiguracija.

Pataisymas: Nuotraukoje turėtų prie path: būti nurodyta /mnt/sda1

Jei po šių nustatymų, nesimato ar nepavyksta prieiti prie vietinio tinklo, tikėtina kad sistemoje nėra  smbclient paketo.

$ sudo apt install smbclient #Diegiam smb klientą

Į vietinį diską perkeliam muziką ar filmus. Peržiūrai naudojam vlc.
vlc vietinis tinklas
VLC programos, Androide, vietinio tinklo langas, 


2016 m. gruodžio 5 d., pirmadienis

iptables

Viršutinė taisyklė laimi.





/etc/sysconfig/iptables - čia saugomos iptable taisyklės.
/etc/sysconfig/iptables-config - iptables konfigūracinis failas.

Paketas praeina pro vieną iš šių grandinių:

Chains:
  • INPUT - paketai skirti ugniasienei.
  • OUTPUT - paketai išsiunčiami iš ugniasienės.
  • FORWARD - maršrutizuojami paketai.
Tiesioginis iptables redagavimas:
# vi /etc/sysconfig/iptables
# iptables-restore /etc/sysconfig/iptables #Išsaugom pakeitimus

Naujos grandines kūrimas:
# iptables -N nauja-grandine

Naujos grandinės tinimas:
# iptables -X nauja-grandine

Permeta visus paketus į nauja-grandinę:
# iptables -t filter -A INPUT -j nauja-grandine

Ip tables atvaizdavimas
# iptables -L [CHAIN]

Iptables atvaizdavimas su eilės numeriais
# iptables -L --line-numbers

Rodo išsamią info kartu su paketų statistika
# iptables -L -n -v

Iptables įrašo trynimas:
# iptables -D [CHAIN] [skaicius]
Iptables gui interfeisas:
# system-config-firewall-tui

Iptables taisyklių išsaugojimas:
# service iptables save
# /sbin/service iptables save 

Tam, kad iptables veiktų po perkrovimo su CentOS:
# chkconfig iptables on
# chkconfig --list iptables
iptables 0:off  1:off   2:on   3:on   4:on   5:on   6:off

Su Ubuntu:
$ sudo invoke-rc.d iptables-persistent save


Iptables taisyklės:

Taisyklės įsigalioja iš karto!

Paketams gali būti taikomos šios taisyklės:

Rule Targets:

  • DROP – numeta paketą.
  • ACCEPT – priima paketą.
  • LOG – įrašo paketą naudojant syslog.
  • REJECT – su klaidos pranešimu atmeta paketą.
  • No target – gali būti naudojama statistikai.
Ryšių būsenos:

Connection Tracking
  • NEW - paketas prašantis užmegsti naują ryšį, pavyzdžiui, HTTP užklausa.
  • ESTABLISHED - užmegztas ryšys.
  • RELATED - kai vienas ryšys susijęs su kitu, pavyzdžiui FTP.
  • INVALID - neatpažintas paketas, kuris nepriklauso nei vienam užmestam ryšiui, ryšių sekimo lentelėje.

Nustatymai:
-A (Append) - Nauja taisyklė pridedama apačioje.
-I (Insert)  - Nauja taisyklė prideda viršuje.


Loginimas:
# iptables -N LOGGING
# iptables -A INPUT -j LOGGING
# iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
# iptables -A LOGGING -j DROP

Taisyklės keitimas, pakeičiant paketų įrašimo greitį:
# iptables -L --line-numbers #Pasižiūrim eilės numerį
# iptables -R LOGGING 1 -m limit --limit 5/s -j LOG --log-prefix "IPTables-Dropped: " --log-level 4

localhost praleidimas:
# iptables -A INPUT -i lo -j ACCEPT
# iptables -A OUTPUT -o lo -j ACCEPT

IP adreso blokavimas:
# iptables -A INPUT -s 192.168.50.1 -j REJECT #Jungiantis rodys klaidos kodą

ssh praleidimas; shh prisijungimas iš tam tikro ip: -s 192.168.50.1
# iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

http praleidimas:
# iptables -I INPUT -p tcp --dport 80 -j ACCEPT

http ir https praleidimas:
# iptables -A INPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

mysql praleidimas:
#  iptables -A INPUT -p tcp --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

Serverio blokavimas per pietų pertrauką:
# iptables -A INPUT -p tcp -m time --timestamp 12:00 --timestop 13:00 -j DROP
# iptables -A INPUT -p udp -m time --timestamp 12:00 --timestop 13:00 -j DROP

Svetainių blokavimas tam tikru laiko intervalu:
# iptables -A OUTPUT -p tcp -m multiport -dport http,https -m time --timestart 12:00 --timestop 13:00 -d IP_adresas -j ACCEPT 

Apsauga nuo ddos atakų, tokių kaip hping:
# iptables -A INPUT -m limit --limit 50/minute --limit-burst 200 -j ACCEPT
# iptables -A INPUT -j REJECT

Draudžia tam pačiam ip adresui jungtis daugiau nei 10 kartų:
# iptables -A INPUT -p tcp -m multiport --dport 80,443 -m state d-state NEW -m recent --set
# iptables -A INPUT -p tcp -m multiport --dport 80,443 -m state --state NEW -m recent --update --seconds 100 --hitcount 10 -j DROP


iptables bazinis šablonas:
# Praleidžiam betkokį susijusi ar jau užmegstą ryšį
-I INPUT 1 -m state --state RELATED, ESTABLISHED -j ACCEPT
-I OUTPUT 1 -m state --state RELATED, ESTABLISHED -j ACCEPT

# Praleidžiam loopbacj
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT

# Praleidžiam DHCP užklausas
-A OUTPUT -o eth0 -p udp --dport 67:68 --sport 67:68 -j ACCEPT

# Praleidžiam SSH
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT

# Praleidžiam/nepraleidžia pašto
-A INPUT -p tcp -m tcp --dport 25 -m state -state NEW -j ACCEPT

-A OUTPUT -p tcp -m tcp --dport 25 -j DROP


# Išorinėms DNS užklausoms:
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT

# Išorinėms ping užklausoms:
-A OUTPUT -p icmp -j ACCEPT

# NPT - Tinklo laiko protokolui
-A OUTPUT -p udp --dport 123 --sport 123 -j ACCEPT

# HTTP serveriams
-A OUTPUT -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 443 -m state --state NEW -j ACCEPT

COMMIT


Naudingi patarimai dirbant su iptables

  • Pasidaryk iptables atsarginę kopiją.

/sbin/iptables-save > /root/iptables-backup-$(date +%F)
/root/iptables-backup-2016-12-06

/sbin/iptables-save > /root/iptables-backup-$(date +%F_%H:%M)
/root/iptables-backup-2016-12-06_11:48

Iškilus bėdai atstatom iptables, su komanda:
/sbin/iptables-restore /root/iptables-backup-`date +%F`
  • Bandymo metu, atstatyk iptables lenteles, numatytu laiko intervalu su cron.
$ ln -s /root/iptables-`date +%F` /root/iptables-veikianti-naujausia

crontab -e įrašas, atstatis iptables lenteles, kas 5 minutes.
*/5 * * * * /sbin/iptables-restore /root/iptables-backup-`date +\q%F` >/dev/null 2>&1

  • Pridėti  savo IP pirmoje taisyklėje, apsisaugant nuo užsiblokavimo 
# iptables -I INPUT -s <ip-adresas> -j ACCEPT

  • Naudokim system-config-firewall-tui programą su grafinių interfeisu
#CentOS 6.8
# yum install system-config-firewall-tui dbus dbus-python
# service messagebus start
# system-config-firewall-tui



Kiti


Porto nukreipimas į kitą portą, pvz tokiu atvėju, kaip prie opvenvpn norime prisijungti per kelis portus (1194, 1195) :

-A INPUT -i <inteface>-p udp -m udp --dport 1194 -j ACCEPT
-A INPUT -i <inteface>-p udp -m udp --dport 1195 -j ACCEPT
...
-A PREROUTING -i <inteface>-p udp --dport 1195 -j REDIRECT --to-port 1194


Kaip blokuoti svetaines per iptables?

$ host -t a facebook.com
facebook.com has address 31.13.93.36

$ whois  31.13.93.36
inetnum:        31.13.93.0 - 31.13.93.255

Sugeneravus CIDR:
 31.13.93.0/24 

Galutinis rezultatas:
$ iptables -A OUTPUT -p tcp -d  31.13.93.0/24 -j DROP

2016 m. gruodžio 4 d., sekmadienis

Raspberri Pi GPIO programavimas

Diegiam gpiozero paketą, skirtą raspbery pi gpio valdymui:
$ sudo apt install python3-gpiozero -y


GPIO išvadai:
Avietės GPIO išvadai su paaiškinimais
Reiktų žinoti, kad netinkamai sujungus GPIO išvadus yra įmanoma sudeginti avietės grandinės komponentus.

Prijungimas ir programavimas

Lemputės prijungimo schema
Tam, kad apskaičiuotume rezistoriaus varžą panaudokime Omo dėsnį:
Varža = (Įtampos Šaltinis - LED praleidimo Įtampa) / LED Maksimalios srovės

GPIO programavimas su python'u

$ python3
>>> from gpiozero import LED #Iš gpiozero bibliotekos importuojam LED
>>> led = LED(18) #Pasirenkam GPIO išvadą, prie kurio prijungta lemputė
>>> led.on() #Lemputė įsijungia
>>> led.off() #Lemputė išsijungia
>>> led.blink() #Lemputė mirksi numatytu, 1 sekundės intervalu
>>> led.toggle() #Ta pačia komanda lemputė įsijungs/išsijungs 


ledblink(švietimo_būsenos_laikas, išjungimo_būsenos_laikas) 
led.blink(2, 2) -  2 sekundes bus švies, ir tiek pat laiko bus išjungta.
led.blink(0.5, 1) - pusę sekundės švies, 1 sekundę bus išjungta.


Mirksinčios lemputės pavyzdys:

Tolesnius pavyzdžius išsaugom su mėgstamiausiu teksto redaktoriumi ir paleidžiam python3 programos_pavadinimas.py komanda.

from gpiozero import LED
from time import sleep

led = LED(18)

while True:
    led.on()
    sleep(1)
    led.off()
    sleep(1)


Mygtuko prijungimo schema


Pavyzdys su mygtuku:

from gpiozero import Button
button = Button(24)
button.wait_for_press()
print('Mygtukas buvo nuspaustas')


Lemputė mirksi nuspaudus mygtuką:

from gpiozero import LED, Button
from time import sleep

led = LED(18)
button = Button(24)

button.wait_for_press()
print("Button clicked")
while True:
        led.on()
        sleep(1)
        led.off()
        sleep(1)



Lempute užsidega. tik tuomet, kai mygtukas nuspaustas:

from gpiozero import LED, Button
from signal import pause

led = LED(18)
button = Button(24)

button.when_pressed = led.on
button.when_released = led.off

pause()

2016 m. gruodžio 3 d., šeštadienis

Kur rasti nemokamų garso įrašų?

https://musopen.org/ - Visiškai nemokama Royalty free muzika.
https://www.freesound.org/ - Creative commons licenzijuoji garsai.
http://soundbible.com/ - Royalty free garso efektai.
https://gamesounds.xyz/ - Nemokami garsai žaidimams.

http://raisedbeaches.com/ - Nemokami mobilių aplikacijų interfeiso garsai.
http://www.freesfx.co.uk/

Apie licencijas:

Royalty Free - galima naudoti ir komerciniams tikslams.

Creative commons:
zero (cc0): Visiškai nemokama, public domain.
attribution (by) - Visiškai nemokama ir komerciniai veiklai, paminint autorių.
attribution noncommercial (by-nc): Tokia pati kaip ir attribution(by), tik skirta nekomerciniai veiklai.

2016 m. gruodžio 1 d., ketvirtadienis

Blogger stiliaus keitimas



Kaip pridėti css stilius?

Tarp <head> </head> tagų įterpiam:
<link href='https://fonts.googleapis.com/css?family=Ubuntu' rel='stylesheet'/> <!-- Eddited pridetas body fontas -->
    <link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet"/> <!-- Eddited pridetas header fontas -->


Kaip pakeisti temos antraštė?

Tarp <b:skin> </b:skin> tagų pakeičiam:
 <Group description="Post Title" selector="h3.post-title, .comments h4">
     <Variable name="post.title.font" description="Font" type="font"
         default="normal normal 22px Arial, Tahoma, Helvetica, FreeSans, sans-serif" value="normal normal 22px &#39;Open Sans MS&#39;,Trebuchet,Verdana,sans-serif"/>
   </Group>

į:

   <Group description="Post Title" selector="h3.post-title, .comments h4">
     <Variable name="post.title.font" description="Font" type="font"
         default="normal normal 22px Arial, Tahoma, Helvetica, FreeSans, sans-serif" value="normal normal 22px &#39;Raleway sans-serif MS&#39;,Trebuchet,Verdana,sans-serif"/>
   </Group>


Kaip pakeisti teksto stilių?

Randam šia eilutę ir papildom, prirašom font-family eilutė.
html body $(page.width.selector) {
  min-width: 0;
  max-width: 100%;
  width: $(page.width);
  font-family: 'Ubuntu', sans-serif;
}

Kaip įvykdyti scenarijų sistemai išsijungiant ar persikraunant?

Su systemd

Ubuntu systemd servisų katalogas: /lib/systemd/system/

$ sudo vim /lib/systemd/system/pries-persikraunant.service #Sukuriam unit failą

Unit skriptas:

[Unit]
Description=/etc/rc.local.shutdown Compatibility
Before=shutdown.target

[Service]
ExecStart=/bin/true
ExecStop=/home/user/bin/backup.sh
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

$ sudo systemctl enable pries-persikraunant #Įgalinam servisą

Serviso klaidų gaudymas:
$ journalctl -u <čia įrašom serviso pavadinimą>



Kitos systemd komandos:
$ sudo systemctl daemon-reload #Pakeitus unit failą, reikia perkrauti servisą
$ sudo systemctl status pries-persikraunant #Informacija apie unit failą


Systemd klasikiniai SysVinit target konfigūraciniai failai:
$ ls -l /lib/systemd/system/runlevel*.target
lrwxrwxrwx 1 root root 15 Lie 12 19:28 /lib/systemd/system/runlevel0.target -> poweroff.target
lrwxrwxrwx 1 root root 13 Lie 12 19:28 /lib/systemd/system/runlevel1.target -> rescue.target
lrwxrwxrwx 1 root root 17 Lie 12 19:28 /lib/systemd/system/runlevel2.target -> multi-user.target
lrwxrwxrwx 1 root root 17 Lie 12 19:28 /lib/systemd/system/runlevel3.target -> multi-user.target
lrwxrwxrwx 1 root root 17 Lie 12 19:28 /lib/systemd/system/runlevel4.target -> multi-user.target
lrwxrwxrwx 1 root root 16 Lie 12 19:28 /lib/systemd/system/runlevel5.target -> graphical.target
lrwxrwxrwx 1 root root 13 Lie 12 19:28 /lib/systemd/system/runlevel6.target -> reboot.target

Be systemd

Runlevel yra sistemos būsena rodanti ar sistema kraunasi, persikrauna, išsijungia ar yra vieno-vartotojo režime ar paprastoje būsenoje.

Šiame kataloge scenarijai bus vykdomi patekus į runlevel 6, o tai reiškia perkrovimą.
Scenarijaus pavadinimai yra svarbūs, jie turi prasidėti K99_pavadinimas.sh ir turėti +x teises,

Scenarijai prasidedantis K raide  yra vykdomi išjungiant, S - užsikraunant.

Scenarijai vykdomi abėcėline tvarka.
Išjungimo scenarijų katalogas  /etc/rc0.d/
Užsikrovimo scenarijų katalogas /etc/rc2.d/  arba /etc/rc.local
Perkrovimo scenarijų katalogas  /etc/rc6.d 


Run level numeriai
0Visi servisai sustabdomi ir serveris išjungiamas. Halt the system.
1Vieno vartotojo rėžimas. Single-user mode (for special administration).
2Multivartotojų režimas. Local Multiuser with Networking but without network service (like NFS)
3Praplėstas multivartotojų režimas. Full Multiuser with Networking
4Pritaikomas savo reikmėms. Not Used
5Grafinis režimas. Full Multiuser with Networking and X Windows(GUI)
6Perkrovimas. Reboot.

Runlevel atvaizdavimas:
$ runlevel 
N 5

Perkrauti galima su init atba telinit komanda:
$ init 6

2016 m. lapkričio 27 d., sekmadienis

Atom - Teksto Redaktorius

Atom atviro kodo teksto editorius, sukurtas github draugų komandos.


Komandų terminalas iškviečiamas: Ctrl+Shift+P

Priedai:
atom-wrap-in-tag - Aplink pažymėtą tekstą uždeda žymę, nuspaudus: Alt+Shift+W.
enclose-html - Savaime uždaro html žymes.
autocomplete-python  -  Savaime užsipildančių python metodų ir funkcijų paketas.
highlight-selected - Paryškina vienodus žodžius.

open-terminal-here - Pasirinktoje vietoje atidaro terminalą.
script - Kodo vykdymas iš teksto rengyklės  Ctrl+Shift+B

atom-html-preview - html atvaizdavimas realiu laiku, nuspaudus: Ctrl+Shift+H.
open-in-browsers - Atidaro puslapį pasirinktoje naršyklėje.

Stiliai:
UI Theme: Seti
Syntax Theme: Gruvbox Plus


Kaip susikurti savo snippet'ą?
Snippet'ai yra raktažodžiai, padedantys greitai sugeneruojanti pasikartojantį kodą.
Snippet pavyzdys

Snippet'ai randasi: Edit -> Snippets
scnippets.cson dokumente, galime aprašyti savo naują snippet'ą.

Pavyzdys:
'.source.python':
  'python header':
    'prefix': 'python3'
    'body': '#!/usr/bin/python3'
  'python demo list':
    'prefix': 'demoList'
    'body': 'L = ["Priešistorė", "Senovės istorija ", "Viduramžiai", "Naujieji amžiai", "Naujausieji amžiai"]'
  'python demo list with numbers':
    'prefix': 'demoListWithNumbers'
    'body': 'L = ["1", "2 ", "3", "Naujieji amžiai", "Naujausieji amžiai"]'

Dokumente rašant žodį pyth... atsidarys lentelė su pasiūlymu,  python3, o pasirinkus šį pasiūlimą,  bus sugeneruotas  kodą esantį po body#!/usr/bin/python3


Kiti įdomūs dalykai:



Atom teksto redaktorius chrome naršyklėje, github, demo.

Lietuviškų sveitainių sąrašas apie GNU/Linux ir Atvirą Kodą

Portalai:
http://planet.akl.lt/ - atvirasis kodas bloguose.
http://opensuse.lt - openSUSE Linux naujienos, pagalba.
http://akl.lt/ - Atviras Kodas Lietuvai.

Tinklaraščiai:
http://sirex.lt/ 
http://cybersig.blogspot.lt/- cybersig.
https://dg.lapas.info/ - Donato Glodenio puslapiai.
http://www.dinux.lt/blog/

Forumai:
https://ubuntu.lt/ - Atsinaujinęs Ubuntu forumas.
http://forumai.akl.lt/ - Diskusijos apie laisvąsias programas.
http://forum.tux.lt - Lietuviškas forumas apie Linux OS.

Pamokos:
http://www.programva.com/- Linux os, komandos, serveriai, kompiuterių tinklas, saugumas.
http://forumas.dedikuoti.lt/ - CentOS pamokos.

Youtube:
https://www.youtube.com/user/Perkunvaikis/videos - Distribucijų apžvalgos.

Kiti:
http://lietuvybė.lt - Ši svetainės dalis yra skirta norintiems užsiimti ar jau užsiimantiems lokalizavimu.


2016 m. lapkričio 20 d., sekmadienis

LVM - loginių tomų valdymas

LVM - Loginis tomų valdymas
Paaiškinimai:
PV: Fizinis tomas (Physical Volume)
Tai particijos dalys, kurio gali būti pridėtos į Tomo grupes.
PV VG Fmt Attr PSize PFree
/dev/sda1 vg_unixac lvm2 a--u 2,00g 420,00m
/dev/sdb1 vg_naujiena lvm2 a--u 2,00g 2,00g
/dev/sdc2 vg_unixac lvm2 a--u 4,51g 0


VG: Tomo grupė (Volume Group).
Abstraktuoja fizinius tomus.
VG #PV #LV #SN Attr VSize VFree
vg_naujiena 1 0 0 wz--n- 2,00g 1,61g
vg_unixac 2 5 0 wz--n- 6,50g 420,00m



LV: Loginis tomas (Logical Volume).
Abstraktuoja tomo grupes.
LV VG Attr LSize Pool Origin
lvol0 vg_naujiena -wi-a----- 100,00m
lvol1 vg_naujiena -wi-a----- 100,00m
lvol3 vg_naujiena -wi-a----- 200,00m                                      


Disko paruošimas

Pirmiausiai su fdisk paruošiam fizinio disko particiją:

fidsk komandos

Pagrindinės fdisk komandos:
  • d - ištrina particiją.
  • n - kuriant naują particiją.
  • w - įrašo pakeitimus.
  • p - particijų sąrašas.
  • t - pasirenkamas particijos tipas.
komandų su fdisk seka:
  1. n, p, 1, default, default  (sukuriam nauja particiją).
  2. t, 8e (pakeičiam tipą į Linux LVM).
  3. p (patikrinam ar viska gerai).
  4. w (įrašom pakeitimus).


Pagrindinės komandos tvarkant lvm:

pvcreate - initialize a disk or partition for use by LVM.
pvremove -  remove a physical volume.
pvs - report information about physical volumes.
pvdisplay - display attributes of a physical volume.
pvscan -  scan all disks for physical volumes.

vgcreate - create a volume group.
vgs - report information about volume groups.
vgdisplay - display attributes of volume groups.
vgremove - remove a volume group,

lvcreate - create a logical volume in an existing volume group.
lvs - report information about logical volumes
lvdisplay - display attributes of a logical volume.

lvmdiskscan — scan for all devices visible to LVM2
df -Ph -report file system disk space usage
lsblk - list block devices
lsblk -o NAME,KNAME,MODEL,TYPE,FSTYPE,UUID,SIZE - išsami informacija apie įrenginius.

Sukuriam tomo grupės deskriptorių /dev/sdb1 pradžioje
$ pvcreate -v /dev/sdb1 #Inicializuojam diską LVM'ui
$ pvremove -v /dev/sdb1 #Trinimas

$ pvs #Atvaizduoja fizinius tomus.
# PV         VG        Fmt  Attr PSize PFree
  /dev/sdb1            lvm2 ---- 2,00g 2,00g

$ vgcreate pavadinimas /dev/sdb1 /dev/sdc1 #Sukuriam tomo grupės pavadinimą ir pridedam du diskus

$ vgremove pavadinimas  #Viso tomo grupės trynimas

$ vgs #Tomų grupės informacija, matom naujai sukurtą grupę
  VG          #PV #LV #SN Attr   VSize VFree
  pavadinimas   2   0   0 wz--n- 3,99g 3,99g

Kaip pridėti prie tomų grupės naują diską?
$ vgreduce pavadinimas /dev/sdc1 #Panaikina diską iš grupės pavadinimas
$ vgextend pavadinimas /dev/sdc1 #Prideda į tomų grupę pavadinimas diską /dev/sdc1

Kaip atskirti tomų grupę?
$ vgsplit pavadinimas naujas-pavadinimas /dev/sdb1; pvs
  PV         VG                 Fmt  Attr PSize PFree
  /dev/sdb1  naujas-pavadinimas lvm2 a--u 2,00g 2,00g
  /dev/sdc1  pavadinimas        lvm2 a--u 2,00g 2,00g

Sujungiam tomų grupes į vieną tomų grupę.
# vgmerge pavadinimas naujas-pavadinimas; pvs
  Volume group "naujas-pavadinimas" successfully merged into "pavadinimas"
PV         VG          Fmt  Attr PSize PFree
  /dev/sda2  vg_unixac   lvm2 a--u 4,51g    0
  /dev/sdb1  pavadinimas lvm2 a--u 2,00g 2,00g
  /dev/sdc1  pavadinimas lvm2 a--u 2,00g 2,00g

 $ pvscan #pvdisplay - detalesnė informacija apie fizinius tomus
  PV /dev/sdb1   VG pavadinimas     lvm2 [2,00 GiB / 2,00 GiB free]
  PV /dev/sdc1   VG pavadinimas     lvm2 [2,00 GiB / 2,00 GiB free]


Kaip sukurti arba ištrinti loginį tomo diską?Loginių tomų buvimo vieta: /dev/<tomo groupė>/<loginis tomas>
Sukuriam tris loginius tomo grupės vg_pavadinimas diskus: e-paštas, muzika ir filmai.
$ lvcreate --name e-pastas --size 100MB vg_pavadinimas
$ lvcreate -n muzika -L 500MB vg_pavadinimas
$ lvcreate --name filmai --size 1G vg_pavadinimas

$ lvs; ls /dev/vg_pavadinimas/
  LV       VG             Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  e-pastas vg_pavadinimas -wi-a----- 100,00m                                                    
  filmai   vg_pavadinimas -wi-a-----   1,00g                                                    
  muzika   vg_pavadinimas -wi-a----- 500,00m                                                    
  lv_root  vg_unixac      -wi-ao----   4,01g                                                    
  lv_swap  vg_unixac      -wi-ao---- 512,00m                                                    
e-pastas  filmai  muzika


Kaip nustatyti/praplėsti/susiaurinti/ištrinti loginį tomo diską?
$ lvextend -L 1.1G /dev/vg_pavadinimas/muzika #Nustatomas fiksuotas dydis

$ lvextend -L+100MB /dev/vg_pavadinimas/filmai #Praplečiam 100MB  tomų grupės pavadinimas loginį tomo diską filmai
$ lvreduce -L-100MB /dev/vg_pavadinimas/filmai #Susiaurinam 100MB
$ lvcreate -l 100%FREE --name kita vg_pavadinimas #Sukuria loginį tomo diską, su visa likusia tomo grupės vg_pavadinimas laisva vieta
$ lvcreate -l 50%FREE -n kita vg_pavadinimas

$ lvcreate -l 591 --name kita vg_pavadinimas #Nurodoma Free  PE reikšmė
$ lvremove /dev/vg_pavadinimas/kita#Trinimas

Kaip pakeisti skaitymo/rašymo teises loginiam tomo diskui?

$ lvchange -pr /dev/vg_pavadinimas/muzika #Suteiks tik skaitymo teises
$ lvchange -prw /dev/vg_pavadinimas/muzika #Suteiks skaitymo/rašymo teises

Operacijų seka 

1. Būdas.
Praplečiant diską su jau esančia failų sistema:
$ mkfs.ext4 /dev/vg_pavadinimas/filmai #Komanda sukurianti failų sistemą.
$ mount /dev/vg_pavadinimas/filmai /filmai
$ unmount  /filmai
$ lvextend -L+500M /dev/vg_pavadinimas/filmai 

# Pertvarkom skaidinius
$ e2fsck -f /dev/vg_unixac/filmai
$ resize2fs /dev/vg_unixac/filmai 

$ mount /dev/vg_pavadinimas/filmai /filmai
$ findmnt #Failų sistemų informacija

2. Būdas (lengvesnis)
Siaurinant/praplečiant galime su viena komanda lvresize:
# umount /dev/vg_unixac/muzika
# e2fsck -f /dev/vg_unixac/muzika 
# lvresize --resizefs --size 10M /dev/vg_unixac/muzika #Dydis iki kurio bus sumažinta, su [-l, --extents], leidžia naudoti procentus arba PE
# resize2fs /dev/vg_unixac/muzika 


Papildomi patarimai:
Su pvcreate ar vgcreate, galima greitai pridėti kelis diskus, nurodant disko raidę ir skirsnio skaičių:
# pvcreate /dev/sd[bcd]1
# vgcreate vg_grupė01 /dev/sd[bcd]2

/etc/fstab mountinimui galima nurodyti UUID, kurį sužinom su blkid komanda, mount -a komandą galime patikrinti fstab įrašą jį uždedant:
UUID=XXX, /mount-point ext4 defaults 0 0 #fstab įrašo pavyzdys