Я пытаюсь написать сценарий «Ожидание» для подключения к VPN... Попытка написать и ожидать (https://likegeeks.com/expect-command/) скрипт для подключения к vpn, это правильная идея:
Команды для подключения:
sudo vpnName [ENTER] *Password* [ENTER] Random number 1-100 [ENTER] [ENTER]
Таким образом, сценарий ожидания будет выглядеть примерно так:
#!/usr/bin/expect -f
set randNum [(( ( RANDOM % 100 ) + 1 ))]
send -- "sudo vpnName\r"
send -- "*password*\r"
send -- "randNum\r \r"





Вы пытаетесь объединить выражение bash с tcl (используется язык expect)
Вместо этого используйте:
set randNum [expr {int(rand()*100) + 1}]
Ожидается, что вам нужно spawn процесс, прежде чем вы сможете взаимодействовать с ним:
#!/usr/bin/expect -f
set randNum [expr {int(rand()*100) + 1}] # as per @Sorin's answer
spawn sudo vpnName
expect "assword" # wait for the password prompt
send -- "*password*\r"
expect "whatever matches the random number prompt"
send -- "$randNum\r\r"
# this keeps the vpn process running, but returns interactive control to you:
interact
Совет: при отладке ожидаемого кода запускайте его с помощью expect -d -f file.exp — это очень важно, чтобы увидеть, совпадают ли ваши ожидаемые шаблоны так, как вы думаете.