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.
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()
dd ile disk okuma/yazma testi
#Yazma hızı testi
dd if=/dev/zero of=1Gb.txt bs=1024 count=1048576
# Okuma hızı testi
dd if=1Gb.txt of=/dev/zero bs=1024
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.
- VDD (+3.3)
- DATA
- BOŞ
- 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!')
Raspberry Pi + LCD Shield Bağlantısı
Merhabalar, asağıda çizmiş olduğum şekilde Lcd Shield ‘in Raspberry pi ile olan bağlantısını görebilirsiniz.
Tercih ettiğim 2 adet kütüphane mevcut. İkisi de güzel çalışıyor.
Örnek Kod:
import time, subprocess, re, Adafruit_CharLCD as LCD from datetime import datetime lcd_rs = 25 lcd_en = 24 lcd_d4 = 23 lcd_d5 = 17 lcd_d6 = 21 lcd_d7 = 22 lcd_backlight = 2 lcd_columns = 16 lcd_rows = 2 lcd = LCD.Adafruit_CharLCD(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) try : while True: tarih = (datetime.now().strftime('%d %b %y %H:%M ')) saat = (datetime.now().strftime('%H')) cpu_sicaklik = subprocess.Popen(['vcgencmd', 'measure_temp'], stdout=subprocess.PIPE) cpu_sicaklik = re.search("\d\d", str(cpu_sicaklik.communicate())).group() lcd.message(tarih) time.sleep(5) lcd.clear() lcd.message("CPU: " + cpu_sicaklik + " C") time.sleep(5) lcd.clear() except: lcd.clear()
Kaynak : https://www.dfrobot.com/wiki/index.php/LCD_KeyPad_Shield_For_Arduino_SKU:_DFR0009
DD Kullanımı
# DD klonunu mount etme
fdisk -u -l sda.img
Hangi partitionu mount etmek istiyorsak onun sektor start degerini 512 ile carpariz
512 x 6096 = 3121152
mount -o loop,offset=3121152 -t auto /root/sda.img /mnt/sda
# Disk klonlama
dd if=/dev/sda of=sda.img
# Klonu alınmış diski başka diske açma
dd if=sda.img of=/dev/sdb
# Klonu ağ üzerinden gönderme
dd if=/dev/sda | ssh root@ip "(cat > sda.img)"
# Dvd veya CD ‘den Iso dosyası oluşturma
dd if=/dev/dvd of=dvd.iso
# Iso dosyasını cd veya dvd ‘ye yazdırma
dd if=dvd.iso of=/dev/cdrom obs=32k seek=0
# Badblock olan dosyayı kurtarma
dd if=test.avi of=test_yeni.avi conv=noerror
Clamav ile php dosyalarında malware taraması
Merhaba,
Clamav için ücretsiz sunulan php malware imzasi sayesinde sunucunuz üzerindeki malware bulaşmış php dosyalarını bulabilirsiniz.
Ücretsiz Php malware imzalarına https://malware.expert/signatures/ adresinden ulaşabilirsiniz.
#Kurulum
1. Clamav yüklü değilse depodan yükleyin.
apt-get install clamav
2. vim /etc/clamav/freshclam.conf dosyasını editörle açıp en alt satıra asağıdaki satırlaları ekleyin.
DatabaseCustomURL http://cdn.malware.expert/malware.expert.ndb
DatabaseCustomURL http://cdn.malware.expert/malware.expert.hdb
DatabaseCustomURL http://cdn.malware.expert/malware.expert.ldb
DatabaseCustomURL http://cdn.malware.expert/malware.expert.fp
3. Servisi yeniden başlatın
systemctl restart clamav-freshclam
4. Şimdi son olarak taranacak dizinde tarama işlemini başlatın.
clamscan -r /var/www/
veya
clamscan -r /var/www/*.php
Sevgiler.