Форум сайта python.su
Парни выпрямите мне пожалуйста руки,никак допереть не могу правильно ли я делаю. Нужно чтобы пинговался комп который подключается к серверу, если внешний массив отваливается,должна вылетать ошибка. Z является внешним массивом.Если не трудно посмотрите пожалуйста.заранее говорю что это дубликат,потому что нигде не могут ответить.
import os import socket HOST = 'address' PORT = 8000 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(HOST,PORT) s.listen(5) def archive_check(): s2 = os.access("Z:\\TrassirArchive", os.F_OK) while True: try: client, addr = s.accept() while True: data = client.recv(1024) if data: print("Data: %s" % data) except Exception, ex: print("Some exception!\n",ex) добавил кусок \\\ try: print("IP: {ip}".format(ip=addr)) print("Host: {name}".format(name=socket.gethostbyaddr(str(addr)))) except (NameError, socket.error): pass \\\\ if s2 == True: settings("archive/z")["read_only"] = 0 timeout(30*1000) settings("archive/f")["read_only"] = 1 settings("archive/d")["read_only"] = 1 #message("Архив работает") #%s") %s2) timeout(10*1000, archive_check) else: settings("archive/f")["read_only"] = 0 settings("archive/d")["read_only"] = 0 alert("Не доступен внешний массив!")# %s") %s2) timeout(10*1000, archive_check) timeout(0, archive_check)
Отредактировано Buldozer (Авг. 28, 2012 11:36:36)
Офлайн
Трудно понять этот код.
elif s2 == True:
while True: try: client, addr = s.accept() while True: data = client.recv(1024) if data: print("Data: %s" % data) except Exception, ex:
Отредактировано FishHook (Авг. 28, 2012 11:08:08)
Офлайн
да,с elif меня не туда че-то понесло
Офлайн
Так наверно проще будет понять всю мою белиберду.есть 2 скрипта их нужно слить в один
import os def archive_check(): s2 = os.access("Z:\\TrassirArchive", os.F_OK) if s2 == True: settings("archive/z")["read_only"] = 0 timeout(30*1000) settings("archive/f")["read_only"] = 1 settings("archive/d")["read_only"] = 1 timeout(10*1000, archive_check) else: settings("archive/f")["read_only"] = 0 settings("archive/d")["read_only"] = 0 alert("Архив работает!")# %s") %s2) timeout(10*1000, archive_check) timeout(0, archive_check)
import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(('localhost', 8000)) s.listen(5) while True: try: client, addr = s.accept() while True: data = client.recv(1024) if data: print("Data: %s" % data) except Exception, ex: print("Some exception!\n",ex) try: print("IP: {ip}".format(ip=addr)) print("Host: {name}".format(name=socket.gethostbyaddr(str(addr)))) except (NameError, socket.error): pass
Отредактировано Buldozer (Авг. 28, 2012 12:04:11)
Офлайн
в одном проверяется доступность диска, во втором слушается порт.
что должен делать результат слияния?
одновременно и проверять диски и слушать ?
думаю тут надо думать о потоках.
а еще лучше вообще не смешивать.
Офлайн
тогда в таком случае что лучше использовать проверку или слух?
Офлайн
так этож две большие разницы.
что надо делать? какова задача?
мониторить доступность томов? первый скрипт облагородить и пусть работает.
import os import time paths={'e':'/windows/e', 'g':'/windows/G', 'f':'/windows/f', 'z':'/usr/z'} while True: print time.strftime("%d.%m.%Y %H:%M:%S") for name in paths.keys(): print '%s acces - %s'%( name,os.access(paths[name],os.F_OK)) time.sleep(1)
Офлайн
ясно,тогда очередной глупый вопрос чтобы он писал в файл with open('111.txt', ‘a’) as fout: этим не обойдешься?
Офлайн
или чтобы он выкидывал сообщение об ошибке или что все нормально
Офлайн
чтобыпечатал только сообщения об ошибке или наоборот - вставь проверку условия.
чтобы печатал в файл - открой файл для записи и пиши в него.
ну а вообще то сначала надо четко понять, что же именно тебе надо. ну и учебник прочитать.
Офлайн