Vim: Replace Regex Örnekleri

Örnek-1:

Mevcut format:
public $hosts;
public $ldap_servers;
public $ldap_port;
public $ldap_encrypt;
public $ldap_rootdn;
public $ldap_password;
public $ldap_base;
public $ldap_uids;
İstenilen format:
hosts,
ldap_servers,
ldap_port,
ldap_encrypt,
ldap_rootdn,
ldap_password,
ldap_base,
ldap_uids,
Replace regex:
:51,58s/public \$\(.*\);/\1,/gi

BASH: Tilgin HG1331 Modemi Tek Komut İle Yeniden Başlatma (restart modem by script)

modem-HG1311Tilgin HG1311 modelli modemini (turkcell superonline’nın fiber Internet hizmeti için verdiklerinden biri) login olup da ilgili sayfalara girip de “Restart” düğmesine basıp modemi yeniden başlatma zahmetini çekmek istemeyenler aşağıdaki shell komutunu çalıştırarak panel login bilgilerini girerek otomatik olarak yeniden başlatabilirler.

Gereksinimler:

  • curl paketi
  • aşağıdaki modem-restart betik kodlarını modem-restart.sh adlı dosya oluşturarak içine yapıştırılmalı
  • modem-restart.sh dosyası için çalıştırma izni verilmeli

Kullanımı:

./modem-restart.sh -h modem_ip -u login_user

Çalışma şekli:

developer@dev:~$ ./modem-restart.sh -h 192.168.1.1 -u admin
Enter login password: 
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  9675    0  9639  100    36   8707     32  0:00:01  0:00:01 --:--:--  8730
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2134    0  2120  100    14  66677    440 --:--:-- --:--:-- --:--:-- 73103

İstenirse modem-restart-output  dosyasından betik çıktıları incelenebilir.

modem-restart.sh betiği:

#!/bin/bash

# author: 	Erman Gülhan
# web site: 	blog.ermangulhan.com
# date: 	27.01.2013
#
# Restarts the modem with the model "Tilgin HG1113".

usage()
{
	echo "Usage: $0 -h host -u loginuser"
	exit 1
}

while getopts ":h:u:" opt; do
	case $opt in
    		h)h=$OPTARG;;
    		u)u=$OPTARG;;
    		\?)
      			echo "Invalid option: -$OPTARG" >&2
      			exit 1
      		;;
    		: )
      			echo "Option -$OPTARG requires an argument." >&2
      			exit 1
      		;;
  	esac
done

if test "$h" == "" 
then
	echo "Invalid host!"
	usage
fi

if test "$u" == "" 
then
	echo "Invalid login user!"
	usage
fi

echo "Enter login password: "
read -s p

if test "$p" == ""
then
	echo "Invalid login password!"
	exit 1
fi

curl -i -L -c vood_cookies --data "__user=$u&__pass=$p&__auth=login" $h > modem-restart-output  && curl -i -L -b vood_cookies $h/tools/restart/ --data "__form=restart" >> modem-restart-output && rm -f vood_cookies

Betik teknik açıklama:

curl -i -L -c vood_cookies --data "__user=$u&__pass=$p&__auth=login" $h > modem-restart-output  && curl -i -L -b vood_cookies $h/tools/restart/ --data "__form=restart" >> modem-restart-output && rm -f vood_cookies
  • -i: çıktıya http header bilgilerini dahil eder
  • -L: ilgili url’e istek sonrası eğer yönlendirme varsa buna izin verir
  • -c vood_cookies: eğer istek yapılan sayfadan cookie geliyorsa bunu vood_cookies adlı dosyaya yazar (bu cookie dosyasını sonraki curl isteğinde kullanacağız)
  • –data “__user=$u&__pass=$p&__auth=login”: ilgili değerler ile POST (application/x-www-form-urlencoded mime-type) isteği yapar
  • $h: istek yapılacak olan url bilgisi (kullanıcının girdiği modem ip adresi)
  • > modem-restart-output: adından da anlaşılacağı gibi betik standart çıktılarını modem-restart-output adlı dosyaya yazar
  • -b vood_cookies: vood_cookies dosyasındaki cookie bilgilerini kullanarak ilgili istek yapılır
  • $h/tools/restart/: istek yapılacak olan url
  • –data “__form=restart”: bu değerler ile POST isteği yapılır
  • >> modem-restart-output: bu dosyaya ikinci curl komut çıktısı eklenir
  • rm -f vood_cookies: son olarak da vood_cookies dosyası silinir

gnome-open: Herhangi Bir Dosyayı Varsayılan Program İle Açma

Gnome masaüstü ortamı kullanıyorsanız ve herhangi bir dosyayı bu dosya için varsayılan program ile açmak istiyorsanız aşağıdaki komut kullanılabilir:

$ gnome-open myfile

Örneğin, bir resim dosyası olsun fakat uzantısı olmadığı için bunun resim dosyası olduğunu bilmiyoruz. Bu komut vasıtası ile ilgili dosyayı uygun programda açabilirsiniz.

$ cd ~
$ ls
ascii.pdf  Downloads     examples.desktop Desktop    Dropbox       Music    Pictures      sf
$ gnome-open sf

Yukarıdaki “sf” adlı dosya bir resim dosyası olduğu için resim görüntüleyicisinde açıldı.

Ayrıca dosyanın ne tür bir dosya olduğunu öğrenmek için file komutunu kullanılabilir.

$ file sf
sf: GIF image data, version 89a, 120 x 120

Ek bilgi olarak, bir de aynı görevi yapan xdg-open komutu vardır. gnome-open gnome masaüstü ortamlarında geçerli bir komuttur fakat xdg-open komutu her XDG uyumlu masaüstü ortamlarında (gnome, kde, lxde, xfce) da geçerlidir.

$ xdg-open sf

bash: iconv İpuçları (iconv tips)

Bir dosyanın karakter kodlamasını değiştirmek için kullanılan komuttur.

 

Örnek:

iconv -f iso-8859-1 -t utf-8 messages.php > messages.utf8.php

Yukarıdaki komut ile iso-8859-1 ile kodlanmaış messages.php dosyasnın karakter kodlaması utf-8’e dönüştürülüyor.

 

-l Parametresi

Bu parametre tüm bilinen kodlama karakter seti listesini verir.

 

//IGNORE Parametresi

Eğer çıktıdaki geçersiz karakterleri gözardı etmek isteniyorsa //IGNORE parametresi kullanılmalı.

Örneğin utf-8’deki ş, ö karakterler iso-8859-1’da mevcut değildir. Eğer //IGNORE parametresiz bu dönüştürme yapılırsa aşağıdakine benzer hata alınır:

iconv -f utf-8 -t iso-8859-1 messages.php
iconv: illegal input sequence at position 0

Bu hataya rağmen dönüştürme yapmak için aşağıdaki şekilde kullanılmalı:

iconv -f utf-8 -t iso-8859-1//IGNORE messages.php

 

– c Parametresi

Bu parametre yaklaşık //IGNORE ile aynı işi görür. -c parametresi ve //IGNORE arasındaki fark, //IGNORE geçersiz karakterleri gözardı ederek dönüştürmeyi yapar fakat hata olursa yine yansıtır. -c parametresi ise hata göstermeden ilgili geçersiz karakterleri gözardı eder.

iconv -c -f utf-8 -t iso-8859-1 messages.php

 

//TRANSLIT Parametresi

Eğer hedef karakter kodlamasında karşılığı bulunmayan karakterlerin uygun şekilde dönüştürülmesi istenirse //TRANSLIT parametresi kullanılmalı.

Örneğin utf-8’dan ş, ö, ğ, ç gibi karakterleri ascii’ye dönüştürürken bu karakterlerin s, o, g, c gibi karakterlere dönüşmesi istenirse:

echo "ş ç ö ğ" | iconv -f utf-8 -t ascii//TRANSLIT
s c o g