gpt4 book ai didi

php - Bash 脚本将输出文件截断为 4096 字节

转载 作者:行者123 更新时间:2023-12-04 18:32:16 25 4
gpt4 key购买 nike

我正在编写一个脚本来自动创建 OpenVPN 证书,以将新客户端添加到 VPN 系统。我正在构建一个小网页(全部是内部的,不能从 Internet 访问),以允许用户输入客户端名称,然后输出一个带有证书的 zip 文件,将其放在新的客户端 PC 上(通过 Teamviewer)。

该脚本(和网页)在 Ubuntu 14.04 服务器上运行,运行 OpenVPN 和 Observium。

当我从终端执行这个脚本时,它运行良好,并且证书创建得很漂亮。

当我从 PHP 命令执行的浏览器运行此脚本时:

shell_exec("sudo <path to script>/<script>.sh $clientname");

证书在 4096 字节处被截断。万无一失。证书应约为 5600 字节。打开时,证书明显被切断(缺少结束标签)。

这是什么原因造成的?我应该怎么做才能解决它?

脚本如下:
#!/bin/bash
cd /etc/openvpn/easy-rsa/
source /etc/openvpn/easy-rsa/vars

expect -c "
spawn /etc/openvpn/easy-rsa/build-key $1
expect {Country Name (2 letter code) \[US\]:} { send \"\r\" }
expect {State or Province Name (full name) \[CA\]:} { send \"\r\" }
expect {Locality Name (eg, city) \[SanFrancisco\]:} { send \"\r\" }
expect {Organization Name (eg, company) \[Fort-Funston\]:} { send \"\r\" }
expect {Organizational Unit Name (eg, section) \[MyOrganizationalUnit\]:} { send \"\r\" }
expect {Common Name (eg, your name or your server's hostname) \[$1\]:} { send \"\r\" }
expect {Name \[EasyRSA\]:} { send \"\r\" }
expect {Email Address \[me@myhost.mydomain\]:} { send \"\r\" }
expect {A challenge password \[\]:} { send \"\r\" }
expect {An optional company name \[\]:} { send \"\r\" }

expect {Sign the certificate? \[y/n\]:} { send \"y\r\" }
expect { commit? \[y/n\]} { send \"y\r\" }

expect {Data Base Updated}
interact"

最佳答案

通过不将交互式 shell 与 spawn/expect/send 结合使用,可以解决此特定问题。直接使用 OpenVPN 的 CLI(由 bu​​ild-key 脚本调用的 pkitool)可以毫无问题地创建文件。

所以语法是:

/etc/openvpn/easy-rsa/pkitool <clientname>

关于php - Bash 脚本将输出文件截断为 4096 字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30734439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com