Bash - Linat Ukuran File dari URL menggunakan bash programming
Terkadang kita ingin memastikan ukuran sebuah file sebelum mendownload, jika situs yang menyediakan file tidak menampilkan informasi ukuran file maka perlu tool tertentu untuk melihat ukuran filenya, script dibawah merupakan bash script untuk melihat informasi ukuran file dari url,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/bash
function bytes_for_humans() {
local -i bytes=$1;
if [[ $bytes -lt 1024 ]]; then
echo "${bytes} B"
elif [[ $bytes -lt 1048576 ]]; then
echo "$(( (bytes + 1023)/1024 )) KB"
else
# elif [[ $bytes -lt 1073741823 ]]; then
echo "$(( (bytes + 1048575)/1048576 )) MB"
# else
# echo "$(( (bytes + 1073741823)/1073741824 )) GB"
fi
}
url="$1"
size=$(HEAD -u "${url}")
size=${size##*Content-Length: }
size=${size%%[[:space:]]*}
sizeh=$( bytes_for_humans $size)
echo " SIZE : $sizeh :: $url "
#echo "-----------------------------------------------"
Beberapa hal yang harus dilakukan untuk implementasi
- buat file script dengan nama contohnya
geturlfilesize.sh
- copy script diatas dan paste ke file yang baru dibuat
geturlfilesize.sh
- ubah file permision agar bisa dieksekusi menggunakan perintah
chmod +x geturlfilesize.sh
- sekarang cari conto url untuk uji coba script dengan perintah
./geturlfilesize.sh "URL"
Update Script
Update dengan menambahkan tool zenity untuk tampilan lebih menarik dan memudahkan
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/bin/bash
function bytes_for_humans() {
local -i bytes=$1;
if [[ $bytes -lt 1024 ]]; then
echo "${bytes} B"
elif [[ $bytes -lt 1048576 ]]; then
echo "$(( (bytes + 1023)/1024 )) KB"
else
echo "$(( (bytes + 1048575)/1048576 )) MB"
fi
}
while true
do
url=$(DISPLAY=:0 zenity --entry --entry-text="$rx" --title="--- Get Url Size ---" --width=450 --text="$msg\nURL [q:exit] :")
prts=("http" "https" "ftp")
if [ "$url" = "q" ] || [ "$url" = "Q" ] || [ "$url" = "" ];
then
break;
exit 0;
else
for prt in "${prts[@]}"
do
if [[ "$url" == *"$prt"* ]]
then
function gurl(){
size=$(HEAD -u "${url}")
size=${size##*Content-Length: }
size=${size%%[[:space:]]*}
sizeh=$(bytes_for_humans $size)
echo "$sizeh" > /tmp/sizeh.tmp
}
gurl |zenity --progress --pulsate --auto-close --text="Get URL Size : $url" --title="--- Get Url Size ---" ;
#===================================
szz=$(cat /tmp/sizeh.tmp)
(DISPLAY=:0 zenity --info --title="--- Get Url Size ---" --text="Hasil \nURL: $url\nSIZE: $szz" --width=450 ;)
else
break;
exit 0;
fi
done
fi
done
sekian, selamat mencoba.
Post by : admin @ kost Yogyakarta.