2015-09-18 2 views
0

У меня есть файл, который содержит список серверов (пробел) пользователя, и теперь я хочу передать этот файл в качестве аргумента сценарию ожидания, чтобы мой скрипт породил ssh session to user @ server и выполнить кучу команд и выйти.Как передать несколько аргументов foreach из файла

cat HostsUserFile.txt 

Server1 User1 
Server2 User2 
Server3 User3 

cat CollectStats.exp 

### Get the list of hosts, one per line, whereas hosts.txt should be a file containing the list of servers and user ##### 
set password **** 
set f [open "HostsUserFile.txt"] 
set hosts [split [read -nonewline $f] "\n"] 
close $f 

### Loop through the hosts listed in host.txt ### 
foreach { host user } $hosts { 
### spawn ssh process ### 
spawn -noecho ssh -q [email protected]$host -o StrictHostKeyChecking=no 
expect "*?assword*" 
send "$password\r" 
expect "*$*" 
send "exit\r" 
} 

Я хочу Сервер1 быть заменен на проведение и User1 быть заменен на переменную пользователя во время 1-й итерации и так далее.

Пожалуйста, помогите мне в этом. Благодарю.

+0

Что вы пытались до сих пор? –

ответ

0

С переменной hosts список списка (т.е. {Server1 User1} {Server2 User2} {Server3 User3}), вы должны использовать одну переменную для цикла foreach и внутри, что вы можете извлечь элементы, как

foreach hostinfo $hosts { 
    # If your 'Tcl' version is 8.5 or above, use lassign as, 
    #   lassign $hostinfo server user 
    # Else, use 'lindex' to get this done 
    set server [lindex $hostinfo 0] 
    set user [lindex $hostinfo 1] 
    puts "Server : $server , User : $user" 

    # Your further code on ssh 
} 
+0

Это сработало! благодаря –

Смежные вопросы