2016-01-13 74 views
0

我知道如何基本打印使用松弛API发送通知松懈,例如,如果我有一个松弛通道名为#testbot,所以我可以打印通知为:如何打印通知松懈通过调用python函数

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

我下面在我有2类Python和以上所有的限定一个作为方法的面向对象之路探寻:

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()能够调用报告类中定义的方法,并打印出结果。 我想要做的就是调用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()调用的结果然后可以送入吨他notify_slack方法。

notify_slack(report.new_hosts()) 
+0

如果我想也把状态发送给内部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