expect的爱恨情仇
背景
openvpn生成证书想把它做成一键化,这样添加新用户时候就方便
遇到的问题
我的代码
gg_vpn_keys.exp
#!/usr/bin/expect set user [lindex $argv ]
set secret [lindex $argv ] spawn /usr/share/easy-rsa/2.0/build-key-pass $user
expect {
"phrase" {send "$secret\r";exp_continue}
"phrase" {send "$secret\r";exp_continue}
"CN" {send "\r";exp_continue}
"Guangdong" {send "\r";exp_continue}
"Shenzhen" {send "\r";exp_continue}
"PP100" {send "\r";exp_continue}
"Account" {send "\r";exp_continue}
"$user" {send "\r";exp_continue}
"EasyRSA" {send "\r";exp_continue}
"mon@pp100.com" {send "\r";exp_continue}
"password" {send "\r";exp_continue}
"company name" {send "\r";exp_continue}
"certificate" {send "y\r";exp_continue}
"commit" {send "y\r";exp_continue}
eof
}
#expect eof exit -onexit {
send_user "general user cert already!!!\n"
}
gg.sh
#!/bin/sh init_env(){
#change to root and stop openvpn and init opvpn cert
sudo su - root
/etc/init.d/openvpn stop
cd /usr/share/easy-rsa/2.0 && source ./vars
} #read opvpn username and general password
read -t 20 -p 'pls input the username:' user || exit 1
secret=`openssl rand -hex 8` init_cert_bak_dir(){
#create ovpn cert_bak_dir if not exist
[ -e /server/openvpn_accout_bak ] || mkdir /server/openvpn_accout_bak
[ -e /server/openvpn_accout_bak/$user ] && \
exit 1 || mkdir /server/openvpn_accout_bak/$user
} create_passfile(){
#write cert password to user_ovpn_dir
echo $secret > /server/openvpn_accout_bak/${user}/${user}_pass_$(date +%F).txt
#general cert
[ -e /server/shells/gg_vpn_keys.exp ] && \
expect /server/shells/gg_vpn_keys.exp $user $secret
sleep 5
#copy cert to user_ovpn_dir
cp /usr/share/easy-rsa/2.0/keys/${user}* /server/openvpn_accout_bak/$user
#generay gg code
useradd $user && chown -R ${user}.$user /server/openvpn_accout_bak/$user $gg=`sudo su - $user -c /usr/local/bin/gg-auth.py`
echo $gg >> /server/openvpn_accout_bak/${user}/${user}_pass_$(date +%F).txt
#general gg qrcode
cd /server/openvpn_accout_bak/${user} && qrencode -o ${user}_google_qrcode.png -t png -s 20 $gg
#general client ovpn file
cd /server/openvpn_accout_bak/ && cp tt100.ovpn $user/${user}.ovpn
sed -i 's#tt100#${user}#g' $user/${user}.ovpn
#general user.tar.gz file
cd /server/openvpn_accout_bak/ && tar zcf ${user}_openvpn.tar.gz ./$user echo "good lucky"
} main(){
init_env
init_cert_bak_dir
create_passfile
} main
搞了老半天..没搞定 后面想起来在搞吧.
expect的爱恨情仇的更多相关文章
- [svc]expect的爱恨情仇
背景 openvpn生成证书想把它做成一键化,这样添加新用户时候就方便 遇到的问题 我的代码 gg_vpn_keys.exp #!/usr/bin/expect set user [lindex $a ...
- Menu与ActionBar的爱恨情仇
最近在开发一款音乐播放器,在开发过程中遇到了一点小麻烦,通过android API搞清楚了Menu与ActionBar的爱恨情仇,写了个小Demo祭奠一下那些年我们陷进去的坑,有不对的地方请大神们批评 ...
- web移动端fixed布局和input等表单的爱恨情仇 - 终极BUG,完美解决
[问题]移动端开发,ios下当fixed属性和输入框input(这里不限于input,只要可以调用移动端输入法的都包括,如:textarea.HTML5中contenteditable等),同时存在的 ...
- 注解:大话AOP与Android的爱恨情仇
转载:大话AOP与Android的爱恨情仇 1. AOP与OOP的区别 平时我接触多的就是OOP(Object Oriented Programming面向对象).AOP(Aspect Oriente ...
- 除了love和hate,还能怎么表达那些年的“爱恨情仇”?
实用英语 帮你全面提高英语水平 关注 童鞋们每次刷美剧的时候,相信都会被CP感满满的男女主角虐得体无完肤吧. 可是,一到我们自己表达爱意或者恨意的时候,却苦于词穷,只会用love, like, hat ...
- 对json的爱恨情仇
本文回想了对json的爱恨情仇. C++有风险,使用需慎重. 本文相关代码在:http://download.csdn.net/detail/baihacker/7862785 当中的測试数据不在里面 ...
- String、StringBuilder、StringBuffer的爱恨情仇
第三阶段 JAVA常见对象的学习 StringBuffer和StringBuilder类 (一) StringBuffer类的概述 (1) 基本概述 下文以StringBuffer为例 前面我们用字符 ...
- [转帖]探秘华为(一):华为和H3C(华三)的爱恨情仇史!
探秘华为(一):华为和H3C(华三)的爱恨情仇史! https://baijiahao.baidu.com/s?id=1620703498823290828&wfr=spider&fo ...
- Tidyverse|数据列的分分合合,爱恨情仇
Tidyverse|数据列的分分合合,爱恨情仇 本文首发于“生信补给站”Tidyverse|数据列的分分合合,一分多,多合一 TCGA数据挖掘可做很多分析,前期数据“清洗”费时费力但很需要. 比如基因 ...
随机推荐
- 转载:设置html页面不让浏览器缓存的方法
本文是转载文章,只是方便自己记录. 在html页面head标签之间添加以下标识可以避免大多数浏览器缓存: <meta http-equiv="Pragma" content= ...
- SQL server 2014安装以及解决连接数据库失败问题
安装教程:http://jingyan.baidu.com/article/3a2f7c2e653d5926afd61197.html 安装好之后打开SQL server 2014 Managemen ...
- Asp.Net MVC 自定义的MVC框架(非EF操作数据库)
一些废话:在北京辞职回家不知不觉中已经半年多了,这半年中有过很多的彷徨,困惑,还有些小小难受.半年时间算是我人生以来遇到过的最困苦的时候.理想的工作跟我擦肩而过,驾照也没有考过,年后这一改革...,毕 ...
- numpy函数fromfunction分析
从函数规则创建数组是非常方便的方法.在numpy中我们常用fromfunction函数来实现这个功能. 在numpy的官网有这么一个例子. >>> def f(x,y): ... r ...
- 5个示例带你学习AngularJS
直到现在,你或许已经听说过AngularJS了,一个改变你对web应用思考方式,由谷歌开发的令人兴奋的开源框架.关于它的文章已经写得非常之多,但我发现还是要写些给那些更喜欢快速且实际例子的开发者.当今 ...
- TechEd2013 Shanghai Hol Session PPT Share
上个月去上海参加了TechEd 2013,并且参与了Hands-on-Lab环节,作为讲师引导大家完成<Local DB in WP8>实验的内容.由于实验的内容采用MVVM架构完成,因此 ...
- java 生成和解析二维码
public class QRCode { /** * 解析二维码(QRCode) * @param imgPath * @return */ public static String decoder ...
- activiti入门
一.Activiti简介 Activiti 是一个针对商务人士. 开发人员和系统管理员的轻量级的工作流和业务流程管理 (BPM) 平台.它的核心是Java的高速和可靠的 BPMN 2 流程引擎.它是开 ...
- 省级联动(使用ajax实现)
在博客园学习了很多实用的东西,现在该慢慢开始自己写写博客文章, 由于本人水平有限,刚走出校园的小菜鸟,另外,文章在表述和代码方面如有不妥之处,欢迎批评指正.留下你 的脚印,欢迎评论! 有什么问题,可以 ...
- HTTP 请求报文 响应报文
引言 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为了提供一种发 ...