2016-01-13 2 views
0

Я знаю, как в основном для печати использовать slack API для отправки уведомления на слабину, например, если у меня есть slack-канал с именем #testbot, поэтому я могу печатать уведомление как:Как печатать уведомление об отказе, вызывая функцию через python

slack.chat.post_message('#testbot','This is a test',username='NMAP_bot') 

Я после объектно-ориентированного apporoach в Python, где я с 2 классами и, прежде всего определенным способом, как:

def notify_slack(): 

class Report(object): 
    . 
    . 
    def new_hosts(self): 
     """Return a list of new hosts added in latest scan""" 
     self.curr_hosts - self.prev_hosts 

    . 
    . 

class Scanner(object): 
    . 
    #Lot of code here 

у меня есть основной метод, который в основном выглядит как:

if __name__ == "__main__":    
     print "New Hosts" 
     report.new_hosts()  #This calls new_hosts() method in class Report 

Таким образом, report.new_hosts() может вызывать метод, определенный в классе Report, и печатать результат. Что я хочу сделать, так это позвонить notify_slack() и передать report.new_hosts() внутри него, чтобы он распечатывал результат.

Любая помощь приветствуется, направляйте меня вверх!

+0

* Возвращает список новых хостов * - этот метод просто печатает, не возвращается ... –

+0

ой да .. поэтому если метод возвращает, то, как я продолжу? – PythonFreak

+0

Вы вызываете этот метод и передаете результат другому методу –

ответ

0

Вам нужно изменить метод new_hosts, чтобы вернуть результат вместо его печати:

class Report(object): 
    . 
    . 
    def new_hosts(self): 
     """Return a list of new hosts added in latest scan""" 
     return self.curr_hosts - self.prev_hosts 

Вам нужно изменить определение notify_slack таким образом, что он принимает один параметр, который будет быть результатом вызова report.new_host:

def notify_slack(host_list): 
    # Don't notify Slack if list of hosts is empty 
    if not host_list: 
     return 

    slack_msg = ' '.join(map(str, msg_list)) 
    slack.chat.post_message('#testbot', slack_msg,username='NMAP_bot') 

результат вызова report.new_hosts() может затем быть передан в т he notify_slack способ.

notify_slack(report.new_hosts()) 
+0

Что делать, если я хочу также поставить условие перед отправкой в ​​slack внутри notify_slack (msg_list), что msg_list не пуст, т.е. если new_hosts() возвращает пустой список, затем нет уведомления о провале, иначе ДА – PythonFreak

+0

Вы можете проверить длину 'msg_list' и вернуть, если длина равна 0 или меньше. Я отредактирую метод 'notify_slack'. – gnerkus

0

То, что я хочу сделать, это notify_slack вызов() и передать report.new_hosts() внутри

Как это?

def notify_slack(hosts): 
    print hosts 
    msg = ' '.join(map(str, hosts)) # delimits all the hosts by space 
    slack.chat.post_message('#testbot',msg,username='NMAP_bot') 


class Report(object): 
    def new_hosts(self): 
     """Return a list of new hosts added in latest scan""" 
     return self.curr_hosts - self.prev_hosts 

# s = ? 
r = s.run("172.16.0.0-255") 
report = Report(r) 
notify_slack(report.new_hosts()) 
+0

спасибо, человек отлично работает – PythonFreak

Смежные вопросы