我有以下nmap命令:
nmap -n -p 25 10.11.1.1-254 --open | grep '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\.[0-9]\{1,3\}' | cut -d" " -f5
这将生成一个ip地址列表,我正试图将其传递给以下python脚本:
#!/usr/bin/python
# Python tool to check a range of hosts for SMTP servers that respond to VRFY requests
import socket
import sys
from socket import error as socket_error
# Read the username file
with open(sys.argv[1]) as f:
usernames = f.read().splitlines()
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host_ip = sys.argv[2]
print("****************************")
print("Results for: " + host_ip)
try:
c = s.connect((host_ip,25))
banner=s.recv(1024)
#Send VRFY requests and print result
for user in usernames:
s.send('VRFY ' + user + '\r\n')
result = s.recv(1024)
print(result)
print("****************************")
#Close Socket
s.close()
#If error is thrown
except socket_error as serr:
print("\nNo SMTP verify for " +host_ip)
print("****************************")
我尝试使用以下命令执行此操作,但是它只在找到的第一个ip上运行脚本:
./smtp_verify.py users.txt $(nmap -n -p 25 10.11.1.1-254 --open | grep '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\.[0-9]\{1,3\}' | cut -d" " -f5)
我也尝试过这样做:
for $ip in (nmap -n -p 25 10.11.1.1-254 --open | grep '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\.[0-9]\{1,3\}' | cut -d" " -f5); do ./smtp_verify.py users.txt $ip done
然而,我收到一个语法错误,这对我来说,我不能通过这种方式管道?你知道吗
bash: syntax error near unexpected token `('
不要有意识地使用
for
循环来解析命令输出,请参见DontReadLinesWithFor,而应该使用带有while
循环的Process-Subtitution语法对于您可能看到的错误,您没有正确地使用命令替换
$(..)
语法来运行管道命令,命令应该在()
周围加上$
。比如说记住总是用双引号引shell变量,以避免shell执行Word Splitting。你知道吗
相关问题 更多 >
编程相关推荐