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等工具下载使用!
本文部分内容来源于“成都@阿状 ” ,由本站“寻音” 优化整理制作完成!
温馨提示:如无特殊说明,本站文章均为作者原创,转载时请注明出处及相应链接!