2012-11-29 132 views
1

我已經在python 2.6.5中編譯了一個腳本,該腳本只是簡單地將我最常用的nmap函數自動化並將輸出記錄到桌面上的txt文件中。 我還沒有寫這一切,因爲我仍然只學習python。我找到了更新回溯的更新腳本,並將其用作縮進和命令的模板,並對其進行了修改並添加了一些我自己的內容,以便爲我提供所需的內容。從raw_input中提取ip地址

我遇到的問題是與此塊

def nmap_target(): 


    try: ip = raw_input(" [>] Enter ip to scan: ") 

except KeyboardInterrupt: 
    print "\n [>] Exiting!\n" 
      sleep(1) 
    sys.exit() 
    print " [>] Attempting targeted scan.\n" 
    #print ip 
if subprocess.Popen("nmap ip >> //root/Desktop/Target.txt && tail /root/Desktop/Target.txt",shell=True).wait() == 0: 
    print "\n" 
    print " [>] Targeted scan completed successfully!\n" 
      menu_main() 

else: 
    print "\n" 
    print " [>] Nmap scan failed.\n" 

其背後的想法是,它要求用戶輸入一個IP地址的raw_input成()和IP調用它,我想然後將它傳遞給nmap使用subprocess.Popen(「nmap ip可以看到上面 問題是它只是寫nmap ip而不是打印ip地址然後返回錯誤,它甚至試圖掃描我的網絡,每當我測試它時,我確定從我的路由器上拔掉了網線,這會導致我的網絡測試出現問題,所以如果您嘗試運行代碼,您可能需要在menu_main()中散列internet_check()選項部分,如果你有你的互聯網從路由器拔出

我已經花了4天的時間,現在它驅使我生氣,起初我以爲我需要將數字轉換爲浮點數,所以我嘗試過,仍然是相同的,我試過了各種各樣的事情,並花了數小時在互聯網上尋找一個無濟於事的答案。

我現在相信它不是我命令我試圖這是責怪我認爲這是退出聲明,我已經嘗試把「打印IP」後,它說「打印」行[>]嘗試有針對性的掃描。\ n「,並確信輸入的IP地址顯示在屏幕上,這證明raw_input()正在工作。只要我將它移動到任何地方,它就會失敗,這表明它必須是退出語句或縮進問題,但我不確定 我也嘗試過對鍵盤中斷以及兩行代碼段進行哈希處理,我試着移動try:if if語句和甚至嘗試其他命令,但它只是不會工作aaaarrrrrgggghhhhhh

我會正確地認爲ip被輸入到raw_input()中,然後在我將它傳遞給subprocess.Popen(「nmap ip。

就像我剛纔提到的,我沒有從頭開始編寫這個腳本,這是我的第一個這樣的項目,所以我有很多東西要學,我已經全部通過python手冊頁,並通過各種各樣的教程,但只是無法弄清楚這一點。 任何幫助將非常感激

我將發佈完整的劇本,如果有人有興趣,只是只要我能弄清楚如何發佈代碼正確

回答

1

您需要從單獨的字符串變量!試試這個:D

if subprocess.Popen('nmap '+ip+' >> //root/Desktop/Target.txt && tail /root/Desktop/Target.txt',shell=True).wait() == 0: 

希望它有幫助!

編輯 - 如果由於某種原因,蟒蛇取原始輸入爲整數,將其轉換爲字符串,像這樣:

if subprocess.Popen('nmap '+str(ip)+' >> //root/Desktop/Target.txt && tail /root/Desktop/Target.txt',shell=True).wait() == 0: 

Python不喜歡來連接海峽和int類型,或因此它告訴時我的腳本失敗:我非常確定你的ip變量是str類型,儘管如此,第一個例子應該可以工作。

乾杯!

+0

謝謝你,你的傳說「的nmap '+ STR(IP)+' 就像一個魅力的工作。謝謝你們倆的幫助,無法在沒有你的情況下完成它 – Dave

+0

沒有問題@Vaughn!樂意效勞。 – 0xhughes

1

您需要正確格式化字符串,否則字符串ip根本不會被解釋,即它不會被實際IP替換。嘗試是這樣的:

cmd = "nmap ${0} >> [....] root/Desktop/Target.txt".format(ip) 
if subprocess.Popen(cmd): 

您也可以使用%操作:

cmd = "nmap %s >> [....] root/Desktop/Target.txt" % ip 
+0

感謝您的回覆,現在工作正常。 – Dave