스크립트의 기존 변수를 대체 할 선택적 인수를 bash 스크립트에 전달할 수 있습니까? 예를 들어 : 이것은 현재 호스트의 IP를 사로 잡고bash 스크립트의 변수를 대체하는 선택적 인수
#!/bin/bash
#hostfinder.sh
#Find hosts in current /24 network
subnet=$(hostname -i | cut -d. -f1,2,3)
for j in \
$(for i in $subnet.{1..255}; do host $i; done | grep -v not | cut -d" " -f5)
do ping -c1 -w 1 $j; done | grep -i from | cut -d" " -f3,4,5 | tr ':' ' ' | \
sed -e 's/from/Alive:/'
, 가능한 이웃, ping 테스트가 찾은 호스트 이름에 대한 역방향 조회를 실행하고 다음과 유사한 출력 표시 :
Alive: host1.domain (10.64.17.23)
Alive: host2.domain (10.64.17.24)
...
을 나를 미치게 만들지 만, 그것은 nmap보다 훨씬 빠르며 좋은 목록을 뱉어 낸다.
어쨌든 스크립트를 실행할 때 클래스 C 네트워크 주소의 처음 3 옥텟을 $ subnet 변수에 $ 1 인수로 선택적으로 전달하고 싶습니다. 예를 들면 다음과 같습니다.
./hostfinder.sh 10.20.0
첫 번째 생각은 $ subnet = $ 1과 (과) 같은 것을 시도한 것이지만 작동하지 않는다고 가정합니다. 나는 스크립트를 다시 작성하는 것에 관심이 없기 때문에 더 우아 해 지거나 무엇이든 할 수 있습니다. 나는 주로 제목에 무엇을 넣었는지 궁금합니다.
의 nmap은 완전히 다른 일을하기위한 것입니다 :
당신은
getopt
여기 사용의 좋은 예를 찾을 수 있습니다. – LtWorfnmap은 많은 일을 할 수 있습니다. :) –
또한 nmap을 사용하는 핑 스윕은 다음과 같이 진행됩니다 : nmap -sP 192.168.1.1-254 –