Вот поток, из которого я возвращаюсь прочь: Ввод входа в команде?
Таким образом, я пытаюсь выполнить эту команду: cd /etc/openvpn/easy-rsa; . ./vars; ./build-key username
Однако после выполнения той команды, я ничего не должен вводить [просто нажимают Enter] 10 раз и нажимают y дважды. Пользователь на последнем потоке предложил, чтобы я использовал кроме, но я не мог получить его работа. Вот вопросы, которые это задает:
root@suffice-vpn:/etc/openvpn/easy-rsa# ./build-key usernamtest
Generating a 2048 bit RSA private key
..................+++
........+++
writing new private key to 'usernamtest.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [US]:
State or Province Name (full name) [NY]:
Locality Name (eg, city) [Merrick]:
Organization Name (eg, company) [IceWare]:
Organizational Unit Name (eg, section) [IceWare]:
Common Name (eg, your name or your server's hostname) [usernamtest]:
Name [server]:
Email Address [iceware@programmer.net]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.0.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'US'
stateOrProvinceName :PRINTABLE:'NY'
localityName :PRINTABLE:'Merrick'
organizationName :PRINTABLE:'IceWare'
organizationalUnitName:PRINTABLE:'IceWare'
commonName :PRINTABLE:'usernamtest'
name :PRINTABLE:'server'
emailAddress :IA5STRING:'iceware@programmer.net'
Certificate is to be certified until Jan 14 18:27:48 2026 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Как Вы видите, я нажимаю Enter 8 раз первоначально [чтобы сохранить вход по умолчанию] и затем нажать Enter еще 2 раза для пропуска дополнительных команд. Затем я должен нажать y дважды. Как я могу автоматизировать это? Я должен иметь, это все происходит в одной команде. Какие-либо предложения?Заранее спасибо.
Вот quick'n'dirty, ожидают сценарий, который можно попробовать (я не могу протестировать его сам, так как я не использую openvpn нигде):
#!/usr/bin/expect
set timeout 20
set username [lindex $argv 0]
spawn ./build-key $username
while 1 {
expect {
"y/n]" { send "y\r" }
"]:" { send "\r" }
eof { break }
}
}
Это в основном отправляет y
каждый раз, когда это видит y/n]
вопрос и просто новая строка каждый раз, когда это видит любую другую заключительную квадратную скобку ]
, пока это не исчерпывает вход.
можно сохранить его как whatever
, сделать его исполняемым файлом и затем выполниться
./whatever usernametest
Я нашел более легкую альтернативу:
cd /etc/openvpn/easy-rsa; . ./vars; ./build-key --batch username