Sunucuları Uzaktan Kapatma ve Yeniden Başlatma

Sistem yöneticilerinin yapmak durumunda olduğu işlerden birisi de bir seferde birçok sunucuyu kapatmak veya yeniden başlatmaktır. Her sunucuya tek tek oturum açıp da her birisinde “shutdown” komutunu vermektense bu işi çok kısa bir sürede halledebiliriz.

Hatırlarsanız, Windows Komut Ortamından Yönetim – Uzaktan Oturum Açma yazımızda PS Araçlarından bahsetmiş ve yazımızda uzaktaki sunuculara komut satırından ulaşmak için psexec aracını kullanmıştık. Şimdi kullanacağımız araç da PS Araçlarından birisi olan psshutdown.

PsShutdown aracının kullanımı Windows komut satırındaki shutdown komutu ile çok benzer. Komutun alabileceği tüm değişkenler aşağıdaki gibi:

psshutdown –s|k|h|r|d|a|l|o bilgisayar1 [,bilgisayar2…] [-u kullanıcı_adı] [-p şifre] [-e [u|p]:xx:yy] [-f] [-c] [-t nn|hh:mm] [-n s] [-v nn] [-m “mesaj”] @dosya

Elbetteki yukarıdaki değişkenlerin hepsini bir arada kullanmayacağız. Önce değişkenleri bir gözden geçirelim:

bilgisayar1 komutun çalıştırılacağı bilgisayar; bilgisayarın adı (hostname) belirtebileceğimiz gibi IP adresini de belirtebiliriz. Aynı zamanda birden çok bilgisayarı da aralarına virgul koyarak yazarak komutun hepsinde çalışmasını sağlayabiliriz. Eğer * ile komutu çalıştırırsanız (* şeklinde), komut etki alanındaki tüm sunucularda çalıştırılır.

@dosya “dosya” isimli dosyanın içinde bulunan tüm sunucularda komutu çalıştır. Dosya herhangi bir düz metin dosyasıdır. Sunucular da her satırda bir sunucu adı/IP adresi olacak şekilde dosyaya yazılmalıdır.

-s Bilgisayarı kapat ama elektriği kesme (shutdown without power off.)

-k Bilgisayarı kapat ve elektriği kes (power off.) Eğer bilgisayar bunu desteklemiyorsa, bu değişken bilgisayarı baştan başlatır.

-h Bilgisayarı hazırda beklet (hibernate)

-r Bilgisayarı yeniden basalt (restart)

-d Bilgisayarı bekleme konumuna al (suspend)

-a Kapatma/yeniden başlatma komutunu iptal et (sadece geriye sayım çalışıyorsa kullanılabilir) (abort)

-l Bilgisayarı kilitle (lock).

-o Konsol kullanıcısının oturumunu sonlandır (log off)

-u Eğer gerekiyorsa uzaktaki bilgisayara bağlanmak için kullanılacak kullanıcı adı (username)

-p Uzaktaki bilgisayara bağlanacak kullanıcı adına ait şifre (password). Eğer şifreyi komut içinde vermezsek, psshutdown bize uzaktaki bilgisayara bağlanırken şifre sorar.

-e Bilgisayarı kapatma/yeniden başlatma sebep kodu. Buradaki u harfi (user) kullanıcı sebep kodlarını belirtirken p (Planlı) ise planlı sebep kodlarını ifade eder. Devamında ise xx majör yy ise minör sebep kodlarını gösterir. Sebep kodları şu şekilde:

Tip

Majör

Minor

Açıklama

Planlı/Plansız

U 0 0 Diğer (Plansız)
P 0 0 Diğer (Planlı)
U 1 1 Donanım: Bakım (Plansız)
P 1 1 Donanım: Bakım (Planlı)
U 1 2 Donanım: Kurulum (Plansız)
P 1 2 Donanım: Kurulum (Planlı)
U 2 2 İşletim Sistemi: Kurtarma (Planlı)
P 2 2 İşletim Sistemi: Kurtarma (Planlı)
P 2 3 İşletim Sistemi: Güncelleme (Planlı)
U 2 4 İşletim Sistemi: Yapılandırma (Plansız)
P 2 4 İşletim Sistemi: Yapılandırma (Planlı)
P 2 16 İşletim Sistemi: Servis Paketi (Planlı)
U 2 17 İşletim Sistemi: Hotfix (Plansız)
P 2 17 İşletim Sistemi: Hotfix (Planlı)
U 2 18 İşletim Sistemi: Güvenlik yaması (Plansız)
P 2 18 İşletim Sistemi: Güvenlik yaması (Planlı)
U 4 1 Uygulama: Bakım (Plansız)
P 4 1 Uygulama: Bakım (Planlı)
P 4 2 Uygulama: Kurulum (Planlı)
U 4 5 Uygulama: Unresponsive (Plansız)
U 4 6 Uygulama: Unstable (Plansız)
U 5 Güvenlik (Plansız)
P 5 Güvenlik (Planlı)
U 5 Network bağlantısı kaybı (Plansız)
P 7 0 Eski shutdown API (Planlı)

-f Çalışır durumda olan uygulamaların kapanmasını bekleme, kapanmaya zorla.

-c Etkileşimli (interaktif) olarak sunucuda çalışan kullanıcının kapatma işlemini iptal etmesine izin ver.

-n Sunuculara bağlanırken kullanılacak saniye cinsinden zaman aşımı

-t Kapanmaya kadar olan sürenin geri sayımı. Varsayılan değer 20 saniyedir, ancak 24 saatlik notasyonda tam saat ve dakika olarak da belirlenebilir (14:45 gibi).

-m Oturum açmış durumdaki kullanıcılara geri sayım başladığında gönderilecek mesaj.

-v Kapanmadan belirlenen saniye kadar once kullanıcılara mesaj gösterir. Değişkenin varsayılan değeri 0 olduğundan, eğer bu değişkeni belirlemezsek kullanıcılar mesajı göremezler (varsayılan değer “kapanmadan 0 saniye once” olduğu için).

Bütün bunları bir örnekte gösterelim: Bilgisayarımda çalıştığım kullanıcı adım tolgabalcı. sunucular.txt dosyası içinde bulunan tüm sunucuları (@sunucular.txt) yeniden başlatmak istiyorum (-r). Etki alanım contoso ve sunuculara bağlanmak için kullanacağım hesabım adm.tolgabalci (-p contosoadm.tolgabalci) ve şifresi de $iFR3 (-p $iFR3) . Komutu çalıştırdıktan 60 saniye sonra kapatma işleminin başlatılmasını istiyorum (-t 60) ve bu 60 saniye boyunca geri sayım çalıştırıp (-v 60), bağlı olan kullanıcılara da “Sunucu yeniden baslatilacaktir. Lutfen gerekli gordugunuz tum dosyalarinizi kaydediniz.” mesajını göndermek istiyorum (-m). Sunucuyu yeniden başlatma sebebim de planladığım bir uygulama bakımı (p:4:1). sunucular.txt dosyamın içeriğinde de 7 adet Terminal Sunucu var ve dosya içeriğim şu şekilde:

TERMSRV01
TERMSRV02
TERMSRV03
TERMSRV04
TERMSRV05
TERMSRV06
TERMSRV07

Bütün bunları bir araya getirdiğimde komutumuz aşağıdaki gibi olacak:

psshutdown -r @sunucular.txt -e p:4:1 -u contosoadm.tolgabalci -p $iFR3 -m "Sunucu yeniden baslatilacaktir. Lutfen gerekli gordugunuz tum dosyalarinizi kaydediniz." -t 60 –v 60

Komutu çalıştırdığımda çıktısı da aşağıdaki gibi olacak:

PsShutdown v2.52 – Shutdown, logoff and power manage local and remote systemsCopyright (C) 1999-2006 Mark Russinovich Sysinternals – http://www.sysinternals.comTERMSRV01:TERMSRV01 is scheduled to reboot in 00:01:00.

TERMSRV02:

TERMSRV02 is scheduled to reboot in 00:01:00.

TERMSRV03:

TERMSRV03 is scheduled to reboot in 00:01:00.

TERMSRV04:

TERMSRV04 is scheduled to reboot in 00:01:00.

TERMSRV05:

TERMSRV05 is scheduled to reboot in 00:01:00.

TERMSRV06:

TERMSRV06 is scheduled to reboot in 00:01:00.

TERMSRV07:

TERMSRV07 is scheduled to reboot in 00:01:00.

İlk bakışta komut çok karmaşık gelse de aslında kullanımı çok kolay ve hatırı sayılır zamanımızı alacak sunucuya oturum açma, kullanıcılara mesaj atma, zamanlama gibi birçok işlemi bir anda birçok sunucu için yapmamızı sağlıyor.

Sunucuları Uzaktan Kapatma ve Yeniden Başlatma” üzerine 5 düşünce

  1. Fatih

    Merhaba,
    Disaster Recovery senaryolarında hızlıca uygulanabilir sanırım. Sunucuların kapatılması ile ilgili uymamız gereken bir sıra var mıdır? Sanırım sunucular.txt dosyasındaki sıraya göre kapatılıyor bu örnekte.
    Teşekkürler.

    Beğen

    Cevapla
  2. Tolga BALCI

    Merhabalar,

    Söylediğiniz gibi sunucular.txt dosyasındaki sıraya göre shutdown komutu uygulanıyor.
    Sanırım “uyulması gereken sıra” ile hangi sırayı sorduğunuzu anlayamadım – yani dosya sunucusu, ardından DC … gibi mi?

    Teşekkürler,
    Tolga BALCI

    Beğen

    Cevapla
  3. Fatih

    Evet, hangi sunucunun hangi sırada kapatılması gerektiğini sormak istedim. Yani bu sunucuların (File, Exchange, DC vb.) tavsiye edilen bir kapatılma sırası var mıdır?

    Teşekkürler.

    Beğen

    Cevapla
  4. Tolga BALCI

    Ortamınızı çok bilmiyorum ama bence en iyi kapatma sırası:

    1. Terminal Server’lar
    2. Application Server’lar (uygulama sunucuları)
    3. Exchange Server’lar
    4. File Server’lar
    5. Domain Controller’lar
    6. DMZ sunucular
    7. Firewall

    Tabi ki siz kendi ortamınıza göre Exchange sunuculardan önce dosya sunucularını kapatmayı tercih edebilirsiniz. Yanlız DC’leri en son kapatmayı unutmayın ki network’ünüzdeki authentication ile ilgili uygulamalar askıda kalmasın. Son ana kadar da firewall’u ayakta tutun ki güvenliği elden bırakmayın.

    Sunucuları açarken de tam ters sırada açmanız gerekiyor. Yani önce firewall, sonra DMZ’deki sunucular, sonra DC gibi.

    Eğer DMZ’deki sunucular bir şekilde bir network kartı ile iç network’e bağlı ve iç network’te bir authentication yapıyorsa, önce DMZ’deki sunucuyu, sonra DC’yi kapatmanız gerekir. Açarken de önce DC’yi, sonra DMZ’deki sunucuyu açmanız gerekir.

    Teşekkürler

    Beğen

    Cevapla
  5. Fatih

    Ben de benzer bir senaryo düşünmüştüm bu sıra ile ilgili ama yine başka fikirler de duymak istedim.

    Teşekkürler.

    Beğen

    Cevapla

Yorum bırakın