0

私はこのウェブサイトが大好きです、それは他の人々の質問を通して私を大いに助けました、今私は参加しました、それで私はできればお互いを助けることができます。

ここに問題があります。VMで(metasploitスイートから)meterpreterを実行しているときに、侵入先のマシンのすべてのポートを中継し、ローカルマシンに仮想インターフェイスを作成するスクリプトを試しました。しかし、私はエラーが発生しています

Undefined method: each

コードに移動している間:

def discovery()
  ip_port = []
  # Alive hosts discovery
  temphosts = []
  hosts = []
  ## oldstdout = $stdout ## Trick for capturing stdout
  $stdout = StringIO.new
  client.run_cmd('run landiscovery')
  temphosts = $stdout.string
  $stdout = oldstdout
  print_status "Alive Hosts:"
  temphosts.each do |x|
    if x.match(/^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/)
      y = x.chomp
      hosts << y
      print " - #{y}\n"
    end
  end
end

どういうわけか、私が囲んでいる線に関係していると思います##nilそうtemphostsでなければなりnilません、そして私はそれぞれのエラーを受け取ります。

誰かが私を良い方向に向けることができますか?

どうもありがとうございました。

PS:誰かが興味を持っている場合のスクリプトはここにあります:http://tools.pentester.es/multirelay

再度、感謝します!

4

1 に答える 1

0
$stdout.string

この行は、\n 文字を含む出力のすべての行を含む単一の String オブジェクトを返します。String オブジェクトには each メソッドはありません。

おそらく、出力の行のリストを表す文字列のリストを取得したいと思うでしょう。この場合、最初に文字列を分割する必要があります。

temphosts.split("\n").each do |x|
于 2011-04-12T18:00:33.457 に答える