linux下自动连接openvpn的bash

Linux下的openvpn自动连接bash,自动尝试指定目录下的所有.ovpn文件 脚本如下所示: #!/usr/bin/env bash # 存放所有ovpn文件的目录 ovpn_dir="/media/link/D/config/vpn/config/" # 存放用户认证信息的文件 auth_file="/media/link/D/config/vpn/auth.txt" # 存放临时日志的文件 log_file="/media/link/D/config/vpn/temp.log" process_name=openvpn # 遍历ovpn目录下的所有ovpn文件 for file in ${ovpn_dir}/*.ovpn; do echo "Trying ${file}..." # 删除旧的日志文件并创建新的 rm -f ${log_file} && touch ${log_file} # 连接VPN并将所有日志重定向到临时日志文件 sudo openvpn --config ${file} --auth-user-pass ${auth_file} --connect-timeout 10 --connect-retry-max 3 > ${log_file} & while true ; do for line in $(cat ${log_file});do if echo "${line}" | grep -q "Initialization Sequence Completed"; then echo "connect success!" while true; do read -p "Input 'stop' to exit" input if [ "${input}" == "stop" ]; then echo "Exiting..." exit 0 fi done fi done sleep 0.2 process_id=$(pidof openvpn) if [[ -z $process_id ]]; then echo "openvpn exited! try next config!" break fi done # 如果连VPN接失败,则提示connect fail! echo "connect fail!" done 这个教程使用的openvpn这个客户端,如果没有这个命令,请先安装openvpn,openvpn的安装方法,请去网上查找。 ...

March 28, 2023 · 1 min · 121 words · Link

windows下自动连接openvpn的powershell脚本

windows下的openvpn自动连接powershell脚本,自动尝试指定目录下的所有.ovpn文件 powershell的脚本如下所示: $ovpn_dir = "D:\MyProject\mybat\vpnconf" $auth_file = "D:\MyProject\mybat\auth.txt" $log_file = "D:\MyProject\mybat\temp.log" foreach ($ovpn_file in Get-ChildItem -Path $ovpn_dir -Filter *.ovpn) { Write-Host "Trying $($ovpn_file.Name)" Remove-Item $log_file -ErrorAction SilentlyContinue $process = Start-Process -FilePath "C:\Program Files\OpenVPN\bin\openvpn.exe" -ArgumentList "--config $ovpn_file --auth-user-pass $auth_file" -NoNewWindow -PassThru -RedirectStandardOutput $log_file $connected = $false while (!$process.HasExited) { $content = Get-Content $log_file if ($content -match "Initialization Sequence Completed") { $connected = $true Write-Host "Connected successfully!" break } Start-Sleep -Milliseconds 1000 } if ($connected) { $inputStr = Read-Host "Type 'stop' to terminate the program" if ($inputStr.Equals("stop")) { $killProcess = Get-Process -Name *openvpn* if ($killProcess) { Stop-Process -Name "openvpn" -Force } break } } if (!$connected) { Write-Host "Configurations failed" $killProcess = Get-Process -Name *openvpn* if ($killProcess) { Stop-Process -Name "openvpn" -Force } Start-Sleep -Seconds 5 } } $ovpn_dir是你自己的配置文件目录,把所有的 .ovpn 文件放到该目录下面。 $auth_file是你的账户信息,里面有两行,第一行是你的用户名,第二行是你的密码。格式大概如下面一样,记得把your_name,your_password整个替换成你的用户名和密码。 your_name your_password $log_file是openvpn的日志输出文件,控制台会读取这个文件,然后比对字符串,看看是否已经成功连接。 openvpn的参数: --config 指定配置文件位置。 --auth-user-pass 指定用户和密码文件 --connect-timeout 10 指定timeout时间,这里表示10秒没有连上就timeout --connect-retry-max 3 指定最多尝试次数,这里尝试3次如果失败就会退出程序 ...

March 28, 2023 · 1 min · 144 words · Link