İ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

./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.

Cevap