Taşınabilir Bellek Biçimlendirme Betiği

Başlatan mimiksiz, 26 Eylül 2018 - 23:28:25

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

mimiksiz

Kalıp yazdırmak için biçimlendirme veya 14 farklı dosya sistemini destekleyen biçimlendirme seçenekleri mevcut. Parted yazılımının kurulu olması gerekiyor.

#!/bin/bash
if ! which parted &>/dev/null; then
        echo "Parted yazılımının kurulu olduğundan emin misiniz?"
        exit 1
fi
clear
bellekler=$(lsblk -lo NAME,TYPE,HOTPLUG|grep disk|grep 1$|awk '{print $1}')
bellek_adet=$(echo $bellekler|wc -w)
if [ $bellek_adet = 0 ]; then
echo "Usb bellek takılı değil."
exit 1
fi
echo "Bulunan çıkarılabilir bellekler:"
while true; do
for (( a=1; a<=$bellek_adet; a++ )); do
echo -en "$a\t/dev/"
echo $bellekler|awk '{print '"\$${a}"'}'
done
echo "Biçimlendirmek istediğiniz usb belleği seçiniz."
read girdi
if [ "$(echo -n $girdi|tr -d '[0-9]')" = "" ] && [ ! $girdi -lt 1 ] && [ ! $bellek_adet -lt $girdi ]; then
silinecek_bellek=$(echo -n /dev/;echo -n $bellekler|awk '{print '"\$${girdi}"'}')
break
else
clear
echo "Hatalı seçim yaptınız. Biçimlendirilecek belleğin numarasını giriniz."
fi
done
clear
while true; do
echo -e "Belleğinizi kalıp yazdırmak için biçimlendireceksiniz:\t1\nDosya formatı seçerek biçimlendirecekseniz:\t\t2"
read girdi
if [ $girdi = 1 ]; then
sil=tam
break
elif [ $girdi = 2 ]; then
break
else
clear
echo "Hatalı giriş yaptınız."
fi
done
clear
if [ "$sil" = "tam" ]; then
while true; do
echo -e "$silinecek_bellek belleğiniz biçimlendirilecek. Onaylıyor musunuz?\ne/h"
read onay
if [ $onay = h ] || [ $onay = H ]; then
echo "İşleminiz iptal edildi."
exit 1
elif [ $onay = e ] || [ $onay = E ]; then
break
else
clear
echo "Hatalı giriş yaptınız."
fi
done
bellekler=$(lsblk -lo type,name $silinecek_bellek|grep part|awk '{print $2}')
bellek_adet=$(echo $bellekler|wc -w)
bellek_adet=$(( $bellek_adet+1 ))
for (( a=1; a<=$bellek_adet; a++ )); do
for (( b=1; b<=$bellek_adet; b++ )); do
c=$(lsblk -no MOUNTPOINT $silinecek_bellek|sed -n $b'p')
sudo umount $c &>/dev/null
done
done
if [ "$c" != "" ]; then
echo "HATA: $c yoluna bağlı bölüm ayrılamadı."
exit 1
fi
bellek2=$(echo $silinecek_bellek|awk -F /dev/ '{print $2}')
disk_konum=/sys/block/$bellek2
toplam_boyut=$(cat $disk_konum/size)
boyut=$(cat $disk_konum/queue/hw_sector_size)
adet=$((toplam_boyut/boyut))
        sudo dd if=/dev/zero of=$silinecek_bellek bs=$boyut count=$adet &>/dev/null
        sudo parted -s $silinecek_bellek mklabel msdos &>/dev/null
clear
echo "$silinecek_bellek belleğiniz biçimlendirildi."
exit
fi
bellek_adet=$(lsblk -lo NAME,TYPE $silinecek_bellek|grep part|wc -l)
while true; do
for (( a=1; a<=$bellek_adet; a++ )); do
echo -en "$a\t/dev/"
lsblk -lo NAME,TYPE $silinecek_bellek|grep part|awk '{print $1}'|sed -n $a'p'
done
echo "Biçimlendirmek istediğiniz bölümü seçiniz."
read girdi
if [ ! "$girdi" -lt 1 ] && [ ! "$bellek_adet" -lt "$girdi" ]; then
break
else
clear
echo "Hatalı giriş yaptınız."
fi
done
clear
silinecek_bellek=$(echo -n /dev/;lsblk -no KNAME,TYPE $silinecek_bellek|grep part|sed -n $girdi'p'|awk '{print $1}')
kontrol(){
clear
if ! which $@ &>/dev/null; then
echo "$@ yazılımının kurulu olduğundan eminmisiniz."
exit 1
fi
while true; do
echo -e "$silinecek_bellek belleğinize $@ komutu uygulanacak. Onaylıyor musunuz?\ne/h"
read girdi
if [ "$girdi" = e ] || [ "$girdi" = E ]; then
bellek=$(lsblk -lno MOUNTPOINT $silinecek_bellek)
sudo umount $bellek &>/dev/null
bellek=$(lsblk -lno MOUNTPOINT $silinecek_bellek)
if [ "$bellek" != "" ]; then
echo "$bellek yoluna bağlı $silinecek_bellek belleğiniz ayrılamadı."
exit 1
fi
sudo $@ $silinecek_bellek
echo "$silinecek_bellek belleğiniz biçimlendirildi."
break
elif [ "$girdi" = h ] || [ "$girdi" = H ]; then
echo "İşleminiz iptal edildi."
exit 1
else
clear
echo "Hatalı giriş yaptınız."
fi
done
}
while true; do
echo "$silinecek_bellek belleğini hangi formatta biçimlendirmek istiyorsunuz?"
echo -e "1:\tFAT16\t\t8:\treiserfs\n2:\tFAT32\t\t9:\txfs\n3:\tNTFS\t\t10:\tjfs\n4:\text2\t\t11:\tbtrfs\n5:\text3\t\t12:\texfat\n6:\text4\t\t13:\tf2fs\n7:\tnilfs\t\t14:\tLinux Swap"
read format
case $format in
1)kontrol mkfs.fat -F16
break
;;
2)kontrol mkfs.fat -F32
break
;;
3)kontrol mkfs.ntfs -f
break
;;
4)kontrol mkfs.ext2
break
;;
5)kontrol mkfs.ext3
break
;;
6)kontrol mkfs.ext4
break
;;
7)kontrol mkfs.nilfs2
break
;;
8)kontrol mkfs.reiserfs
break
;;
9)kontrol mkfs.xfs -f
break
;;
10)kontrol mkfs.jfs -f
break
;;
11)kontrol mkfs.btrfs -f
break
;;
12)kontrol mkfs.exfat
break
;;
13)kontrol mkfs.f2fs -f
break
;;
14)kontrol mkswap
break
;;
*)clear; echo "Hatalı giriş yaptınız."
;;
esac
done

aderinkaya

Hocam ayıptır sorması :) biçimlendirme betiği ne manaya geliyor? Verdiğiniz kodları ne yapmak gerekiyor ne anlatıyor bize? Yanlış anlamayın cahilliğimden soruyorum yani.

mimiksiz

Estağfirullah. Flash disk (taşınabilir bellek) de ki tüm dosyaları silmek için, veya dosya sistemini değiştirmek için(içinde ki dosyalar da silinir) fat32 den ntfs ye çevirmek gibi, veya format dosyası olan iso kalıbını yazmadan önce hazırlamak için windows ortamında bulaşan virüslerden kurtulmak için, ram yetmediği noktada takas alanı olarak biçimlendirip /etc/fstab dosyasına kayıt ederek ramsizlikten kurtulmak için vs. işlere yarar.

Aslında çok basit olan bu işlem için niçin yazdınız derseniz kullanıcı hangi komutla biçimlendireceğini bilemiyebiliyor veya gparted ortamında biçimlendirse dahi hata alıyor daha önce kalıp dosyası yazdırdığı için, bu betikte kalıp dosyası yazdırdıktan sonra sorunsuz biçimlendirme yapılabilir.

aderinkaya

Anladım hocam peki bu paketi çalıştırmak için ne yapmak gerekir? Metin belgesinde .deb olarak mı .py olarak mı kaydetip çalıştırmali yoksa terminalden mi uygulamalı?

mimiksiz

Metin belgesine uzantısı .sh olarak kaydedip dosyanın bulunduğu dizinde terminalden çalıştırma izni chmod +x dosyaadı.sh verdikten sonra yine terminalden dosyanın bulunduğu dizinde ./dosyaadı.sh komutu ile çalıştıralibilirsiniz.
Ayrıca parted yazılımını kurmanız gerekiyor. ubuntu için sudo apt install parted

aderinkaya

Çok teşekkür ederim birşey daha öğrenmiş oldum sayenizde. Emeğinize sağlık.

mimiksiz