2015-03-31 75 views
0

我在網絡交換機上運行的腳本:海峽對象不可調用的腳本

import exsh 

def main(): 

     #result='0' 
     #print result 
     result=exsh.clicmd('show ver', capture=True) 
     print result 
     result=exsh.clicmd('sh switch', capture=True) 
     print result 
     result=exsh.clicmd('sh vlan', capture=True) 
     print result 
     exsh.clicmd('create vlan vlan10 tag 10') 
     result=exsh.clicmd('sh vlan10', capture=True) 
     print result 
     exsh.clicmd=('del vlan10') 
     result=exsh.clicmd('sh vlan', capture=True) 
     print result 

if True: main() 

當我運行它,我得到預期的輸出,直到它到達第18行:

Traceback (most recent call last): 
    File "/config/test.py", line 23, in <module> 
    if True: main() 
    File "/config/test.py", line 18, in main 
    result=exsh.clicmd('sh vlan', capture=True) 
TypeError: 'str' object is not callable 

什麼變得更讓人意想不到的是,如果我再次隨即錯誤現在出現在8號線運行:

* X460-24p.2 # run script test.py 
Traceback (most recent call last): 
    File "/config/test.py", line 23, in <module> 
    if True: main() 
    File "/config/test.py", line 8, in main 
    result=exsh.clicmd('show ver', capture=True) 
TypeError: 'str' object is not callable 

不河畔e如何追蹤問題。

回答

2

您設置exsh.clicmd=('del vlan10')這使得exsh.clicmd一個字符串,那麼你嘗試用result=exsh.clicmd('sh vlan', capture=True)後調用它:

In [1]: foo = ('del vlan10') 

In [2]: type(foo) 
Out[2]: str 

In [3]: foo() 
--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-3-624891b0d01a> in <module>() 
----> 1 foo() 

TypeError: 'str' object is not callable 
+0

經典......他們也許應該改變異常消息,以類似「你確定你只是沒」分配'str'來調用?' – user3012759 2015-03-31 15:22:12

+0

@ user3012759 ....這個異常消息不是正確的嗎? – miradulo 2015-03-31 15:26:40

+0

@ user3012759,如果您查看錯誤,它會向您顯示導致錯誤的對象,並以公平的方式告訴您爲什麼,它很明確。 – 2015-03-31 15:49:37

相關問題