openvpn自动化管理用户密钥
一、创建expect交互脚本
1、安装expect 命令
[root@VPN ~]#yum -y install expect
2、进入vpn所在位置
[root@VPN ~]# cd /etc/openvpn/easy-rsa/2.0
3、创建自动应答交互脚本vpn_create.expect
[root@VPN 2.0]# vim vpn_create.expect
#!/usr/bin/expect -f
if $argc<1 {
puts stderr "Usage: $argv0 need argv.\n"
exit 1
}
set vpnuser [lindex $argv 0]
set path /etc/openvpn/easy-rsa/2.0
spawn $path/build-key $vpnuser
expect "*"
send "\r"
expect "*"
send "\r"
expect "*"
send "\r"
expect "*"
send "\r"
expect "*"
send "\r"
expect "*"
send "\r"
expect "*"
send "\r"
expect "*"
send "\r"
expect "*"
send "\r"
expect "*"
send "y\r"
expect "*"
send "y\r"
expect eof
exit
4、添加权限
[root@VPN 2.0]#chmod 755 vpn_create.expect
二、创建vpnuser命令脚本
1、创建命令目录($HOME/bin)
[root@VPN ~]# mkdir bin
2、创建用户密钥目录
[root@VPN ~]#mkdir keys
3、创建vpnuser命令脚本
[root@VPN ~]# cd bin
[root@VPN bin]# vim vpnuser
#!/bin/bash
canshu_num=$#
xuan_ze=$1
vpn_user=$2
help()
#帮助函数
{
echo '添加vpn用户执行命令: vpnuser add vpn用户名'
echo '删除vpn用户执行命令: vpnuser del vpn用户名'
}
add_user()
#新建vpn用户函数
{
if [ -f /etc/openvpn/easy-rsa/2.0/keys/$vpn_user.crt ];then
echo "================================================<温馨提示>================================================"
echo "VPN用户:$vpn_user已存在,请检查后操作!!"
echo "=========================================================================================================="
else
cd /etc/openvpn/easy-rsa/2.0
source ./vars &>/dev/null
./vpn_create.expect $vpn_user &>/dev/null
cd /etc/openvpn/easy-rsa/2.0/keys
cp $vpn_user.* ca.crt client.ovpn /root/keys
echo "cert $vpn_user.crt">>client.ovpn
echo "key $vpn_user.key">>client.ovpn
cd /root/keys
tar zcf $vpn_user.tar.gz $vpn_user.* ca.crt client.ovpn &>/dev/null
echo "================================================<成功提示>================================================"
echo "新建vpn用户:$vpn_user成功!"
rm -rf $vpn_user.c* $vpn_user.key ca.crt client.ovpn
echo "================================================<成功提示>================================================"
echo "新建vpn用户:$vpn_user 密钥已生成在/root/keys 下,请自行获取!!!"
echo "=========================================================================================================="
fi
}
copy_user()
#拷贝vpn用户函数
{
cd /etc/openvpn/easy-rsa/2.0/keys
cp $vpn_user.* ca.crt client.ovpn /root/keys
cd /root/keys
echo "cert $vpn_user.crt">>client.ovpn
echo "key $vpn_user.key">>client.ovpn
tar zcf $vpn_user.tar.gz $vpn_user.* ca.crt client.ovpn &>/dev/null
rm -rf $vpn_user.c* $vpn_user.key ca.crt client.ovpn
echo "================================================<成功提示>================================================"
echo "vpn用户:$vpn_user 密钥已拷贝/root/keys 下,请自行获取!!!"
echo "=========================================================================================================="
}
del_user()
#删除vpn用户函数
{
cd /etc/openvpn/easy-rsa/2.0/
source ./vars &>/dev/null
/etc/openvpn/easy-rsa/2.0/revoke-full $vpn_user &>/dev/null
rm -rf /etc/openvpn/easy-rsa/2.0/keys/$vpn_user.*
echo "================================================<成功提示>================================================"
echo "注销并已删除vpn用户:$vpn_user成功!"
echo "=========================================================================================================="
}
main()
#主函数
{
if [ $canshu_num -ne 2 ];then
echo "================================================<错误提示>================================================"
echo "输入参数无效,请检查!"
echo "================================================<帮助提示>================================================"
help
echo "=========================================================================================================="
else
if [ $xuan_ze = "add" ];then
add_user
elif [ $xuan_ze = "copy" ];then
copy_user
elif [ $xuan_ze = "del" ];then
del_user
else
echo "================================================<错误提示>================================================"
echo '输入参数类型无效,类型只包含add|copy|del'
echo "================================================<帮助提示>================================================"
help
echo "=========================================================================================================="
fi
fi
}
main
4、添加执行权限
[root@VPN bin]# chmod 755 vpnuser
5、检测环境变量$PATH路径
[root@VPN bin]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
注:默认$PATH中就有$HOME/bin ,只是进一步确认,保证vpnuser命令正确执行
三、测试
1、添加用户
命令格式:vpnuser add vpn用户名
[root@VPN ~]# vpnuser add admin
================================================<成功提示>================================================ 新建vpn用户:admin成功! ================================================<成功提示>================================================ 新建vpn用户:admin 密钥已生成在/root/keys 下,请自行获取!!! ==========================================================================================================
2、删除用户
命令格式:vpnuser del vpn用户名
[root@VPN ~]# vpnuser del admin
================================================<成功提示>================================================ 注销并已删除vpn用户:admin成功! ==========================================================================================================
3、如果用户已存在
[root@VPN ~]# vpnuser add admin
================================================<温馨提示>================================================ VPN用户:admin已存在,请检查后操作!! ==========================================================================================================
4、参数错误
[root@VPN ~]# vpnuser a admi
================================================<错误提示>================================================ 输入参数类型无效,类型只包含add|del ================================================<帮助提示>================================================ 添加vpn用户执行命令vpnuser add vpn用户名 删除vpn用户执行命令vpnuser del vpn用户名 ==========================================================================================================
5、查看已生成用户密钥
[root@VPN ~]# ls keys admin.tar.gz
注:使用sz、ftp、tftp、xftp等工具下载使用!
本文部分内容来源于“成都@阿状 ” ,由本站“寻音” 优化整理制作完成!
温馨提示:如无特殊说明,本站文章均为作者原创,转载请注明出处!


