2013-12-14 2 views
0

나는 기본적인 파이썬을 배울 수있는 방법으로 잠시 동안 작은 툴킷을 사용 해왔다. 이 툴킷의 일부는이 설명 뒤에 오는 코드입니다. 로컬 서브넷의 모든 IP 주소를 핑 (ping)하는 것만으로 기본 네트워크 열거 스크립트입니다. 그러나 몇 가지 문제를 구현하는 데 문제가 있습니다. 코드 파이썬 문자열과 ints를 결합하는 방법은 무엇입니까?

ip1=raw_input() 

if ip1 == None: 
    ip="192.168.0.x" 
else: 
    ip=ip1 

ipend="1" 

while ipend != 255: 
    ip.replace("x", ipend) 

    attempt=subprocess.Popen(["ping.exe", ip], stdout=subprocess.PIPE).communicate()[0] 

    if ("unreachable" in attempt): 
     pass 
    else: 
     print "The host at ", ip, "is UP!" 

    ipend += 1 

if ipend == "255": 
    subprocess.stop 
     raw_input("Thank you for using PTK. Please press enter to exit.") 

enum() 

그래서, 저는 믿습니다 내 str.replace 기능에 내 첫 번째 문제입니다

첫째, 나는를 시도하고이에 STR로 인해 int로 그것을 만들 수없는 것 같다, 핑, 올바른 ip를 인쇄하십시오. 전체 문자열을 부동 int로 변환해도 작동하는지 확신 할 수 없지만, 나는 그걸 생각하고있다. 이전에 말했듯이 나는 파이썬으로 매우 기본적이고 배우기 위해 일하고 있으므로 간단한 수정으로이 바보 같은 질문을한다면 용서해주십시오.

답변

2

이 줄은 실제로 아무 것도하지 않습니다. 결과를 무언가에 할당해야합니다.

ip.replace("x", ipend) 

ipend는 문자열이며 증분 문자열은 작동하지 않습니다. int로 만들고 replace 함수에서 str으로 변환하십시오.

ipend += 1 

그리고 그것은 당신이 엉망으로하고 무한 루프를 만드는에서 안전 해요 당신이 할 수있는 경우에, 그래서 루프를 사용하는 것이 좋습니다.

for ipend in range(1,256): #Range won't actually give you the last number here. 
    #Do stuff 
+0

예를 들어 ip2 = ip.replace – L8NIT3TR0UBL3

+0

예와 같이 추가해야합니다. 그런 다음 ip2를 사용하여 – M4rtini

+0

깨끗한 답변을 주셔서 감사합니다! 그게 바로 내가이 사이트를 사랑하는 이유입니다! – L8NIT3TR0UBL3

관련 문제