Press enter to see results or esc to cancel.

Clozilla’yı Özelleştirme ve Otomatik Restore İşlemi

Merhaba,

Bu yazıda clonezilla’yi özelleştirmeyi ve clonezilla kurulu usb bellek üzerindeki clonu otomatik olarak nasıl restore edeceğimizi anlatmaya çalışacağım. Umarım faydalı bir yazı olur.

#Gereksinimler

1. Imajınızın boyutuna göre usb bellek. (32Gb flash bellek kullanacağım.)

2. Clonezilla, zip olarak indirilecek. (https://clonezilla.org/downloads/download.php?branch=stable)

3. Imaj dosyası. (Önceden almış olduğunuz clone)

#Kurulum adımları

1. Usb belleğin disk yapısı ayarlanır.

32Gb usb belleğin 1Gb’lık kısmını clonezilla için, geri kalan kısmını da imaj dosyası için ayırıyorum.

fdisk -l komutu ile mevcut partitionlara ve disklere bakılır. Aşağıdaki şekilde görüldüğü üzere /dev/sdb aygıtı bizim usb belleğimiz.

fdisk /dev/sdb komutu ile disk yapılandırılmasına geçebiliriz. Şekildeki gibi usb belleğin partition yapısını ayarlıyoruz.

1Gb ‘lık yani /dev/sdb1 partitionunun Boot flag’i ekliyoruz. (clonezilla yüklenecek partition)

Son olarak fdisk -l çıktısı şekildeki gibi olacaktır.

Bölümleri biçimlendiriyoruz.

mkfs.vfat -n CLONEZILLA /dev/sdb1 #Clonezilla ‘nın olacağı bölüm

mkfs.vfat -n IMAGE /dev/sdb2 # restore edeceğimiz clonun bulunduğu bölüm

2. İndirmis olduğumuz zip dosyasını usb belliğin CLONEZILLA etiketi altında bulunan partiton’a kopyalıyoruz.

#automount olduğu için /media/username/disk_etiketi altına kopyalanıyor, eğer otoamatik mount yoksa el ile mount etmeniz gerekiyor.

unzip /home/murat/Downloads/clonezilla-live-2.6.2-15-amd64.zip -d /media/murat/CLONEZILLA/

3. Şimdi ki adım clonezilla ‘yi bootable olarak yapıladırmak, bunun için makeboot.sh scriptini kullanacağız.

bash /media/murat/CLONEZILLA/utils/linux/makeboot.sh /dev/sdb1 #/dev/sdb1 usb belleğin clonezilla olan bölümüdür. Ara ara tekrarlıyorum ki yanlış aygıtı yazıp sisteminizin bootunu bozmayın.

#Eğer aşağıdaki gibi bir hata alırsanız libc6-i386 paketinin yüklü olmamasından dolayıdır. Yüklemek için apt-get install libc6-i386 komutunu kullanabilirsiniz.

On x86-64 system, you should install libc6-i386 (for Debian/Ubuntu) or glibc.i686 (for Fedora/CentOS/OpenSuSE) package so that the required libraries to run 32-bit program /tmp/linux_tmp.BUBQkD/syslinux exist

4. Almış olduğumuz clonezilla image dosyasını /dev/sdb2 aygıtı olan ve IMAGE etiketli partitiona kopyalıyoruz ve almış olduğumuz clonen dizininin adını image olarak değiştiriyoruz.

Örnek: clon dosyasının adı 2019-09-11-16-img, bu dizinin adını sadece image olarak değiştiriyoruz. Eğer ilerde tekrardan yeni bir clone atmak zorunda kalırsanız sadece bir tane genel dosya altında bulunsun ki her seferinde grub.cfg dosyasında değişiklik yapmayalım diye böyle yapıyoruz.

5. Şimdi en önemli kısıma geldik. UEFI ve LEGACY BIOS için ayrı ayrı yapılandırma yapmamız gerekiyor.

LEGACY BIOS için değişiklik yapmanız gereken dosya syslinux/isolinux.cfg dosyasıdır.

/media/murat/CLONEZILLA/syslinux/isolinux.cfg

UEFI BIOS için değişiklik yapmanız gereken dosya boot/grub/grub.cfg dosyasıdır.

/media/murat/CLONEZILLA/boot/grub/grub.cfg

Hangi dosya üzerinde değişiklik yapmak istiyorsak herhangi bir editörle açıyoruz. Biosum UEFI olduğu için ben grub.cfg dosyası üzerinden devam edeceğim.

Amacım sadece restore işlemi olduğu için sadece aşağıdaki değişikleri yaptım. Kendinize göre değişiklikleri yapabilirsiniz.

vim /media/murat/CLONEZILLA/boot/grub/grub.cfg

# set pref=/boot/grub set default="0" #Load graphics (only corresponding ones will be found) #(U)EFI insmod efi_gop insmod efi_uga #legacy BIOS #insmod vbe if loadfont $pref/unicode.pf2; then set gfxmode=auto insmod gfxterm terminal_output gfxterm fi set timeout="5" set hidden_timeout_quiet=false insmod png if background_image $pref/grub.png; then set color_normal=black/black set color_highlight=white/black else set color_normal=cyan/blue set color_highlight=white/blue fi insmod play play 960 440 1 0 4 440 1 #Since no network setting in the squashfs image, therefore if ip=, the network is disabled. menuentry "LATTEPANDA - IMAGE - 11-09-2019"{ search --set -f /live/vmlinuz #Bizi ilgilendiren aşağıdaki satırdır. linux /live/vmlinuz boot=live config noswap nolocales edd=on nomodeset noprompt ocs_prerun="mount /dev/sda2 /home/partimag" ocs_live_run="ocs-sr -g auto -e1 auto -e2 -scr -r -j2 -p poweroff restoredisk image mmcblk0" ocs_live_extra_param="" keyboard-layouts=NONE ocs_live_batch="yes" locales=en_US.UTF-8 vga=788 ip= nosplash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes initrd /live/initrd.img }

#Açıklama

set timeout=”5″ #grub bekleme süresi

if background_image $pref/grub.png #grub arka planı

mount /dev/sda2 /home/partimag # /dev/sda2 bölümü imajın bulunduğu bölümdür. Bu sizde farklı olacaktır çünk benim kurulum yapacağım disk mmc disktir. Teyit etmek için clonezilla üstünde fdisk -l çıktısına bakabilirsiniz.

poweroff # Süreç bittikten sonra makinayı kapatır.

restoredisk # restore işlemi yapılacağını belirtiyoruz.

image # /dev/sda2 içinde bulunan image dizinidir. Bu imaj dizini içinde clon olmak zorunda.

mmcblk0 # hangi aygıta restore işlemi yapılacaksa o aygıtın adıdır. sda sdb vb olabilir. (Sadece aygıt adı yazılacak, tam yol olmayacak)

Dosyayı kaydedip çıktıkdan sonra usb üstünden boot edip beklememiz gerekiyor. Eğer herhangi bir hata yapılmadıysa bir tuşa basmanıza gerek olmadan almış olduğunuz clone yeni diskinize yüklenecektir.

Sevgiler.

[Bash] Özel Değişkenler

Bash kabuğunun içinde gömülü olarak gelen özel değişkenler aşağıdaki gibidir.

$$

Geçerli kabuğun pid numarasını verir.

root@debian:~# echo $$

532

$!

Arka plana atılmış olan son komutun pid numarasını verir.

root@debian:~/test# mkdir test{1..9} &

[1] 799

root@debian:~/test# echo $!

799

$?

son çalıştırılan komutun exit status çıktısı.

ps -aux | grep sshd | grep -v grep | echo $?

sshd olduğu için çıktı 0 (sıfır) olacaktır. Eğer komutun çıktısı bir değer döndürmeseydi çıktı 1 olacaktı.

exit code 0 = success

exit code 1-255 = others

$#

Girilen argümanların toplam sayısını verir.

root@debian:~/test# ./test.sh a b c d e f g h

Girilen Toplam Arguman Sayisi: 8

#Script içeriği

#!/bin/bash

echo "Girilen Toplam Arguman Sayisi: $#"

$@

Girilen tüm argümanları listeler.

root@debian:~/test# ./test.sh a b c d e f g h

Girilen Argumanlar: a b c d e f g h

#Script içeriği

#!/bin/bash

echo "Girilen Argumanlar: $@"

$0

Geçerli scriptin dosya adı.

root@debian:~/test# vim test.sh

root@debian:~/test# chmod +x test.sh

root@debian:~/test# ./test.sh

Script adi: ./test.sh

#Script

#!/bin/bash

echo "Script adi: $0"

$1..9 veya $n

$1 > 1. argümanı verir.

$2 > 2. argümanı verir.

root@debian:~/test# ./test.sh a b c

1. arguman a

2. arguman b

3. arguman c

#Script

#!/bin/bash

echo "1. arguman $1"

echo "2. arguman $2"

echo "3. arguman $3"

Sevgiler.

touch komutu

touch komutu var olan dosyanın zaman damgasını değiştirir, dosya yoksa yeni bir boş dosya oluşturur.

Kullanımı :

touch deneme.txt

Sadece modify time değistirmek istiyorsak -m parametresiyle kullanırız.

touch -m deneme.txt

stat deneme.txt komutu ile baktığımız da modify satırının değiştiğini görebilirsiniz.

Örnek Çıktı:

root@node2:~# touch deneme.txt

root@node2:~# stat deneme.txt

File: deneme.txt

Size: 0 Blocks: 0 IO Block: 4096 regular empty file

Device: 801h/2049d Inode: 131093 Links: 1

Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)

Access: 2019-07-11 11:09:12.745217629 +0300

Modify: 2019-07-11 11:09:12.745217629 +0300

Change: 2019-07-11 11:09:12.745217629 +0300

Birth: -

root@node2:~# touch -m deneme.txt

root@node2:~# stat deneme.txt

File: deneme.txt

Size: 0 Blocks: 0 IO Block: 4096 regular empty file

Device: 801h/2049d Inode: 131093 Links: 1

Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)

Access: 2019-07-11 11:09:12.745217629 +0300

Modify: 2019-07-11 11:11:31.767782892 +0300

Change: 2019-07-11 11:11:31.767782892 +0300

Birth: -

root@node2:~#

### -d parametresiyle belirli bir zaman damgasına sahip dosya oluşturabilirsiniz.

touch -d "1 June 2018" deneme1.txt

root@node2:~# touch -d "1 June 2018" deneme1.txt

root@node2:~# stat deneme1.txt 

  File: deneme1.txt

  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file

Device: 801h/2049d	Inode: 131285      Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2018-06-01 00:00:00.000000000 +0300

Modify: 2018-06-01 00:00:00.000000000 +0300

Change: 2019-07-11 11:21:54.451264560 +0300

 Birth: -

root@node2:~#

Örnekleri çoğaltabiliriz.

touch -d "1 July 2017 10:44" deneme2.txt
touch -d "30 October" deneme3.txt
touch -d "2001-01-01" deneme4.txt
touch -d "01/01" deneme5.txt

Sevgiler.

Postfix ile farklı iplerden eposta göndermek

Postfix 3.0 versiyonuyla gelen randmap özelliği sayesinde her table lookup sorgusundan rasgele bir dönüş gelir. Örneğin 3 adet değeriniz var diyelim ve her sorgulamada bir değer rasgele seçilir. Biz de bu yapıyı kullanarak tek bir sunucu üzerinden ama farklı ip adreslerinden eposta göndereceğiz ve bu sayede bedava eposta hizmeti sunan sistemlerin günlük eposta alma limitlerine takılmayacağız.

Ayrıca bu randmap özelliğiyle yük dengeleme de yapabilirsiniz.

randmap: Her tablo sorgusundan rasgele sonuçlar döndürür.

#Kurulum Öncesi

Gerçek sunucu ip adresi : 192.168.1.230

Sanal Ip 1 : 192.168.1.231

Sanal Ip 2 : 192.168.1.232

Sanal Ip 3 : 192.168.1.233

#Kurulum

1. master.cf dosyasına ekleyeciğimiz ip adresleri /etc/network/interface dosyasında vip olarak tanımlanır.

iface enp6s1:0 inet static

      address 192.168.1.231/24

iface enp6s1:1 inet static

      address 192.168.1.232/24

iface enp6s1:2 inet static

      address 192.168.1.233/24

Interfaceler ayağa kaldırılır.

ifup enp6s1:0;ifup enp6s1:1;ifup enp6s1:2

2. vim /etc/postfix/master.cf dosyasını açıp aşağıdaki satırları kendinize göre düzenleyin ve kaydedin.

relay1 unix - - n - - smtp

  -o smtp_bind_address=192.168.1.231

  -o smtp_helo_name=mail1.deneme.org

  -o syslog_name=relay1

relay2 unix - - n - - smtp

  -o smtp_bind_address=192.168.1.232

  -o smtp_helo_name=mail2.deneme.org

  -o syslog_name=relay2

relay0 unix - - n - - smtp

  -o smtp_bind_address=192.168.1.230

  -o smtp_helo_name=mail0.deneme.org

  -o syslog_name=relay0

relay3 unix - - n - - smtp

  -o smtp_bind_address=192.168.1.233

  -o smtp_helo_name=deneme.org

  -o syslog_name=relay3


3. vim /etc/postfix/main.cf dosyasına asağıdaki 2 satırı ekliyoruz.

sender_dependent_default_transport_maps = randmap:{relay0,relay1,relay2,relay3}

smtp_connection_cache_on_demand=no

4. Postfix servisi yeniden başlatılır.

systemctl restart postfix

Bundan sonraki kısım tamamen local ip adreslerinin dışarıya hangi ip ile natlanacağı kısımdır.

Örnek : 192.168.1.230 > 88.xx.x.55

Örnek : 192.168.1.231 > 88.xx.x.56

Örnek : 192.168.1.232 > 88.xx.x.57

Örnek : 192.168.1.233 > 88.xx.x.58

Gönderilmiş olan epostalar belirtmiş olduğumuz ip adreslerinden rasgele çıkacaktır. Loglarda relay{0,1,2,3} olarak takip edebilirsiniz.

Örnek Log:

Sep 27 16:46:28 duyuru **relay0/smtp**[15703]: E1358BC7C37: to=<deneme@deneme.org>, relay=gw.deneme.org[1.1.1.1]:25, delay=2, delays=0.01/0/1.6/0.44, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as A5BE7C12C89

Sevgiler.

Zaman Damgası ve Find Komutu

Linux üstünde Access time, modify time ve change time olarak adlandırılan 3 adet zaman damgası vardır. Bu zaman damgalarının açıklamaları aşağıda verilmiştir.

atime = access time > cat, vim, more, less veya diğer araçlarla okuma veya görüntüleme

mtime = modify time > vim vb. araçlarla içeriğin düzenlenmesi veya içeriğim değiştirilmesi

ctime = change time > metada değişimi, yanı dosya hakları, adı veya lokasyonu (chown, chmod, chgrp)

Bir dosyanın zaman damgasını görmek için stat komutu kullanılır.

Eski zaman damgasına sahip bir dosya oluşturalım ve ardından stat komutunu çalıştıralım.

touch -d "5 April 2018" test.txt

stat test.txt

cat,grep,more,less gibi komutlarla test.txt dosyasını görüntüleyelim.

Şekilde de görüldüğü üzere more ile dosyayı okuduğumuzda içerik ve metadata değişmediği için sadece Access satırı değişti.

Eğer içeriğini değiştirirsek Modify zaman damgası da değişecektir.

Şekilde de dikkat ederseniz Change time da değişti. Dosya değişikliği olduğu için datablock değişiyor ve değiştiği içinde Change time değişiyor.

Dosyanın haklarını değiştirirsek bu sefer sadece Change time değişecektir.

Access time, Modify time ve Change time kavramlarını öğrendiğimize göre artık find ile kullanılan -atime, -mtime, -ctime örneklerine geçebiliriz.

(more…)

Python MQTT Subscribe Kodu

import paho.mqtt.client as mqtt

def on_connect(client, userdata, flags, rc):

if rc == 0:

print ("MQTT OK.")
client.subscribe("sensor/balkon/sicaklik")
client.subscribe("sensor/balkon/nem")
else:
print (rc)

def on_message(client, userdata, message):

if message.topic == "sensor/balkon/sicaklik":

s1 = str(message.payload.decode("utf-8"))
print ("Sicaklik :",s1.split(".")[0])

if message.topic == "sensor/balkon/nem":
s2 = str(message.payload.decode("utf-8"))
print ("Nem :", s2.split(".")[0])

client = mqtt.Client("Python1")
client.on_connect = on_connect
client.on_message = on_message
client.username_pw_set(username="esp1", password="000000")

try:

client.connect("mqtt.murat.ws", 1883, 60)

except:
print ("Baglanti Hatasi.")

try:

client.loop_forever()

except KeyboardInterrupt:

client.loop_stop()
client.disconnect()

TP-Link Archer T4U

Merhaba, aşağıdaki adımları takip ederek TP-Link Archer T4U Usb wireless adaptörünün sürücüsünü yükleyebilirsiniz.

Not: TP-Link Archer T4U Realtek 8812au chipsetini kullanmaktadır. 

# Yükleme

git clone https://github.com/abperiasamy/rtl8812AU_8821AU_linux

cd rtl*

make

make install

modproble -a rtl8812au

Bu işlemlerin ardından kernel sürüyücü otomatik olarak yükleyecektir.

Sevgiler.

 

RaspberryPi DHT22 Isı ve Nem Sensorü

-20 ~ +80 derece arasında sıcaklık ve 0 ~ 100 arasında nem ölçebilir. 4 Adet pini mevcut olup 3 pini aktif olarak kullanılır.

  1. VDD (+3.3)
  2. DATA
  3. BOŞ
  4. GND (-)

İki çeşit DHT22 sensörü bulunmaktadır. Bunlardan bir tanesinin VDD ve DATA pinleri arasına 10K ‘lık direnç bağlanan modeli, (DATA pinine ufak bir akım geçişi sağlamamız gerekmektedir.) diğerindeyse direnç içinde gömülü olan modelidir. Fritzing şeması VDD ve DATA pinleri arasına direnç bağlanan modeli üzerinedir.

Sensörden değer almak için Adafruit DHT kütüphanesini kullanacağız.

https://github.com/adafruit/Adafruit_Python_DHT

Yükleme:

#PyPi ‘den yüklemek

pip3 install Adafruit_DHT

#Karalı sürüm

https://github.com/adafruit/Adafruit_Python_DHT/releases

#Kararsız sürüm

git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit
python3 setup.py install

Adafruit_Python_DHT/examples içinde örnek kodlar mevcuttur.

Fritzing Şeması:

Örnek Kod:

import Adafruit_DHT, time
while True:
humidity, temperature = (Adafruit_DHT.read_retry(Adafruit_DHT.AM2302, 21))
if humidity is not None and temperature is not None:
print('Sicaklik={0:0.1f}* Nem={1:0.1f}%'.format(temperature, humidity))
time.sleep(5)
else:
print('Veri okunamadi!')
Yabancı Bahis Siteleri--