[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