01 Ekim 2010 10:39 tarihinde Sencer HAMARAT <[email protected]> yazdı: > İyi günler, > > Sunucudan yedek almak üzere bir python scripti yazdım. yazdığım script şu > şekilde: > > cat nw_changer.py > > #------------------------------------- > #!/usr/bin/python > # -*- coding: utf-8 -*- > > import sys > import os > import getpass > from datetime import date > > userName=getpass.getuser() > today = date.today().isoformat() > localPath = "~/DB_Backup/" > serverAddress="***.com" > serverPath = "/home/***/" > backupFile = "db_%s_0000.backup" % today > > stop_network="network down" > start_network="network up" > stop_network_now="" > start_network_now="" > network_profiles={'kablo':'Eth_Kablo', 'adsl':'Eth_ADSL'} > default_conn="adsl" > connections=os.popen("network connections").read() > > def change_network(connection=None): > if connection: > if connection=="kablo": > print "Baglanti kablo'ya aktariliyor\n" > stop_netwok_now="%s %s"%(stop_network, > network_profiles['adsl']) > start_network_now="%s %s"%(start_network, > network_profiles['kablo']) > else: > print "Baglanti adsl'ye aktariliyor\n" > stop_netwok_now="%s %s"%(stop_network, > network_profiles['kablo']) > start_network_now="%s %s"%(start_network, > network_profiles['adsl']) > > os.system(stop_network_now) > os.system(start_network_now) > else: > print "Baglanti degistirilmeye gerek duyulmadi\n" > > print "Internet baglantisi kontrol ediliyor\n" > if "[\x1b[32;01mX\x1b[0m] \x1b[36;01mEth_ADSL\x1b[0m" in connections: > print "Baglanti ADSL uzerindeymis\nDegistirilecek\n" > change_network(connection="kablo") > else: print "Istenilen baglanti profili zaten aktif, baglanti > degistirilmeyecek.\n" > > backup_progress="scp %...@%s:%s%s %s" % > (userName,serverAddress,serverPath,backupFile,localPath) > print "Uzak sunucudaki yedegin kopyalanma islemine baslandi\n" > os.system(backup_progress) > print "Uzak sunucudaki yedegin kopyalanma islemi tamamlandi\nBaglanti eski > haline getiriliyor\n" > change_network(connection=default_conn) > print "Baglanti %s uzerine alindi\nProgram Sonu\n\n"%default_conn > sys.exit() > #------------------------------------- > > Bu dosyayı crontab -e ile cron işi olarak şu şekilde kendi kullanıcı > crontab'ıma ekledim: > > 00 01 * * * /home/sencer/devel/tools/nw_changer.py >> > /home/sencer/DB_Backup/nw_changer.log 2>&1
Şöyle yapın; 00 01 * * * root /home... > > ./nw_changer.py dosyasını elle çalıştırdığımda hiçbir sorun çıkarmadan > bağlantıyı değiştirip işini yerine getirip bağlantıyı eski haline getiriyor. > Aksi gibi crontab scripti çalıştırdığında log dosyasında bağlantıyı > değiştirirken hep hata basmış. Bu yüzden bağlantı değiştirilemediği için > yedek alamamış makine. Hata çıktısı aşağıdaki gibidir: > > > polkit-grant-helper: given auth type (1 -> no) is bogus > Attempting to obtain authorization for error. > Failed to obtain authorization for error. > Bringing up Eth_ADSL (eth1) > Traceback (most recent call last): > File "/bin/network", line 402, in <module> > sys.exit(main()) > File "/bin/network", line 394, in main > return stateProfile(command) > File "/bin/network", line 369, in stateProfile > link.Network.Link[package].setState(profile, state) > File "/usr/lib/pardus/comar/__init__.py", line 127, in call > raise dbus.DBusException, exception > dbus.exceptions.DBusException: tr.org.pardus.comar.Comar.PolicyKit: error > > Connection to ***.***.***.*** timed out while waiting to read > > > > Aynı şekilde bağlantıyı değiştiremediği gibi bağlantıyı geri almak için > çalıştırılan komut için de aynı hatayı vermiş olması söz konusu. > > polkit-grant-helper: given auth type (1 -> no) is bogus > Attempting to obtain authorization for error. > Failed to obtain authorization for error. > Bringing up Eth_Kablo (eth1) > Traceback (most recent call last): > File "/bin/network", line 402, in <module> > sys.exit(main()) > File "/bin/network", line 394, in main > return stateProfile(command) > File "/bin/network", line 369, in stateProfile > link.Network.Link[package].setState(profile, state) > File "/usr/lib/pardus/comar/__init__.py", line 127, in call > raise dbus.DBusException, exception > dbus.exceptions.DBusException: tr.org.pardus.comar.Comar.PolicyKit: error > > > Acaba bunun sebebi nedir diye düşünüyorum ama aklıma birşey gelmiyor. > Sonuçta kendi kullanıcımın crontab'ına kendi kullanıcımla yarattığım > dosyayı, cron'un kendim kullanıcım adına çalıştırmabilmesi için eklendiğini > varsayıyorum. Acaba bu düşüncemde mi bir yanlışlık var? Kullanıcı ile ilgili > bir sorun olabilir mi? > > iyi çalışmalar > > > > -- > Opera'nın e-posta istemcisi ile gönderildi: http://www.opera.com/mail > _______________________________________________ > Pardus-kullanicilari e-posta listesi > Listeden çıkmak için > http://liste.pardus.org.tr/mailman/listinfo/pardus-kullanicilari adresini > kullanın. > Listeye iletmek istediğiniz soruları [email protected] > e-posta adresine gönderin. > Liste mesajlarında arama yapmak için http://liste.pardus.org.tr/arama web > sayfasına gidin. > -- Ali E.İMREK _______________________________________________ Pardus-kullanicilari e-posta listesi Listeden çıkmak için http://liste.pardus.org.tr/mailman/listinfo/pardus-kullanicilari adresini kullanın. Listeye iletmek istediğiniz soruları [email protected] e-posta adresine gönderin. Liste mesajlarında arama yapmak için http://liste.pardus.org.tr/arama web sayfasına gidin.
