[Pardus-kullanicilari] cron ve network ile profil değiştirme

Sencer HAMARAT sencerhamarat at gmail.com
1 Eki 2010 Cum 10:39:50 EEST


İ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 %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

./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 mesaj listesiyle ilgili daha fazla bilgi