Почему я не могу использовать весь 100% потенциал ЦП?

Есть два пути; либо используйте обратную косую черту для каждого специального символа, либо вместо этого используйте фигурные скобки вокруг пароля:

expect1.1> set pass "\$Hunter2"
$Hunter2
expect1.2> set pass {$Hunter2}
$Hunter2

Три! Три способа: пароль можно прочитать из файла thepasswordfile ; это имеет то преимущество, что пароль отсутствует в коде:

#!/usr/bin/env expect

# wrap with catch(n) or try(n) if you don't want an error to abort 
# the code...
set fh [open thepasswordfile]
set password [gets $fh]

puts $password

В-четвертых, соберите пароль из программы, которая выводит его на стандартный вывод:

#!/usr/bin/env expect

if {[catch {exec ./getthepassword} results options]} {
    puts $results
    exit 1
}

puts $results

Это может выглядеть примерно так:

$ cat fromstdin 
#!/usr/bin/env expect

if {[catch {exec ./getthepassword} results options]} {
    puts $results
    exit 1
}

puts $results

$ cat getthepassword 
#!/bin/sh
echo '$Hunter2'

$ chmod +x fromstdin getthepassword
$ ./fromstdin 
$Hunter2
$ 

Пять! Пятью способами пароль также можно прочитать из среды ( окружение (7) , tclvars (n) )

#!/usr/bin/env expect
set password $env(pass)
puts $password

при условии, что экспортный проход = '$ Hunter2' или эквивалент был выполнен в родительском процессе до вызова этой реализации. Оборотная сторона: переменные среды передаются всем дочерним процессам, которым может потребоваться или не иметь права на просмотр пароля. В случае сомнений отключите переменную после ее использования или копирования:

#!/usr/bin/env expect
set password $env(pass)
unset env(pass)
...
1
08.08.2015, 01:43
0 ответов

Теги

Похожие вопросы