iki dizeyi bitiştirmek (concate) için aşağıdaki kodu kullanın.
Örnek
1 2 3 |
var = 'abc' var = "${var}def" echo $var |
çıktı
abcdef
Örnek
1 2 3 |
var = 'abc' var = "${var}def" echo $var |
abcdef
Shell script yazmayı seven biri olarak, bazen kabuk programlama yaparken birden fazla satırı comment yani yorum satırı haline getirmek için aşağıdaki yönetemi kullanabilirsiniz.
1 2 3 4 5 6 7 |
<<COMMENT1 //kod bloğu COMMENT1 (or) <<comment1 //kod bloğu comment1 |
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 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# Bu script community A-B sunuculari arasinda gecis icin kullaniliyor. # Ornek: # bash /bin/community a (b yi aktif etmek icin) # bash /bin/community b (a yi aktif etmek icin) # omeroner #!/bin/bash ## node lists a="10.10.141.10 10.10.141.11 10.10.141.12 10.10.141.13" b="10.10.141.20 10.10.141.21 10.10.141.22 10.10.141.23" ## functions function commenableA() { for commenable in ${a} do tmsh modify ltm node $commenable session user-enabled done } function commdisableA() { for commenable in ${a} do tmsh modify ltm node $commenable session user-disabled done } function commenableB() { for commenable in ${b} do tmsh modify ltm node $commenable session user-enabled done } function commdisableB() { for commenable in ${b} do tmsh modify ltm node $commenable session user-disabled done } if [ "$1" = "a" ]; then { commenableB commdisableA } else { commenableA commdisableB } fi tmsh save /sys config |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#!/bin/bash #omer oner #Bu script ptr kaydını kontrol edip, kayıt bulamaz #ise belirtilen adrese mail gönderir. ips='85.111.12.35 85.111.12.34 212.175.12.117' for ip in $ips do result=$(dig -x $ip +short) if [[ $result == *istanbul* ]] ; then echo $ip ptr has the record: $result else echo $ip ptr record not found > /tmp/ptr /usr/bin/mutt -F /root/.muttrc -s "$ip ptr record not found " -i /tmp/ptr omer.oner@istanbul.net fi done |
Bazen Linux’te bir ip adresininden gelen trafik engellenmek istenebilir. Bunun için aşağıda belirttiğim komutları terminalde çalıştırmak yeterli olacaktır.
1 2 |
iptables -A INPUT -s 202.54.20.22 -j DROP iptables -A OUTPUT -d 202.54.20.22 -j DROP |
Çok sayıda IP adresi engellemek için basit bir kabuk proglamı yazabiliriz.
Bir metin dosyası oluşturun:
1 |
[root@omeroner~]vim /root/ip.blocked |
IP adreslerini ekleyelim;
1 2 3 4 |
#Ip address block file 202.54.20.22 202.54.20.1/24 65.66.36.87 |
Aşağıdaki gibi bir komut dosyası oluştururuz;
1 2 3 4 5 6 7 |
BLOCKDB=”/root/ip.blocked” IPS=$(grep -Ev “^#” $BLOCKDB) for i in $IPS do iptables -A INPUT -s $i -j DROP iptables -A OUTPUT -d $i -j DROP done |
kaydedin ve dosyayı kapatın.
Shell komut dosyasında hata ayıklama sıkıcı bir iş olabilir. Bir kabuk komut dosyasında (shell script) hata ayıklama için çeşitli yollar vardır.
belli bir dizindeki dosyaların toplam boyutunu hesaplayan bir shell script yazalım.
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 |
#!/bin/bash # Shell script ile MySQL veritabani tablo tablo (innodb) yedekleme # omer oner source /etc/profile DEST="/data/backup/mysql" DATE=`date +%Y-%m-%d` MYSQL="$(which mysql)" MYSQLDUMP="$(which mysqldump)" ZIP="$(which gzip)" FIND="$(which find)" DBS="$($MYSQL -Bse 'show databases')" LOG="/data/backup/mysql/dump.log" mkdir $DEST/$DATE echo "Start:$(date +%Y-%m-%d/%T)" >> $LOG for db in $DBS do mkdir $DEST/$DATE/$db TABLES=`echo "show tables"| $MYSQL $db -N>/tmp/tables` while read i do $MYSQLDUMP --routines --single-transaction $db $i > $DEST/$DATE/$db/$i.sql $ZIP -f $DEST/$DATE/$db/* # dosyaları zipliyoruz. done < /tmp/tables done $FIND $DEST -maxdepth 1 -type d -mtime +2 -exec rm -rf {} \; echo "Finish:$(date +%Y-%m-%d/%T)" >> $LOG echo " " >> $LOG |