Linux下设置LANG变量

vim 编辑文件,里面是有中文的,可是环境变量中LANG=C,非常不便啊,经常得export LANG=zh_CN来解决。放在/etc/profile里也不是个事。 一劳永逸的方法: # vi /etc/sysconfig/i18n ------ LANG="zh_CN.UTF-8" SUPPORTED="zh_CN.UTF-8:zh_CN:zh:zh_TW.UTF-8:zh_TW:zh:en_US.UTF-8:en_US:en" SYSFONT="latarcyrheb-sun16" ------

2024年01月09日 · 1 分钟 · 12 字 · 八戒

SNMP OID来监控网络设备流量

想自己画图来监控交换机的流量,第一步就是通过snmpwalk来得到交换机的进出流量: 我们用得是Cisco 3750的24口交换机,给个OID表: 先看一下交换机的端口情况: snmpwalk -v 2c -c xxxxxxxx 172.16.1.1 .1.3.6.1.2.1.2.2.1.2 得到一堆信息,问网络工程师得到1/0/5和2/0/5这两个端口是双上连线路: IF-MIB::ifDescr.10105 = STRING: GigabitEthernet1/0/5 IF-MIB::ifDescr.10605 = STRING: GigabitEthernet2/0/5 记住两个端口的描述符,10105和10605. 继续,我们看上表,.1.3.6.1.2.1.2.2.1.10(接口收到的字节数),我们要得到某个具体端口收到的字节数,就必须加上端口的描述符了。所以要得到1/0/5的收到字节数,就是.1.3.6.1.2.1.2.2.1.10.10105 #snmpwalk -v 2c -c xxxxxxxx 172.16.1.1 .1.3.6.1.2.1.2.2.1.10.10105 IF-MIB::ifInOctets.10105 = Counter32: 2198534228 ok,拿到字节数了,然后单位是bytes,换算成bit(*8),然后除若干1024,得到单位m,g, t等,入库,然后调hichart画图即可。 然而,还有一个问题,看清上面的单位,Counter32,呵呵,所以这里是不对的。现如今的网络多是千兆网卡了,所以counter32是不对的, 100Mbps以上必须使用Counter64的单位,给个对照表: 高速网卡(100兆以上): ifHCInOctets: 1.3.6.1.2.1.31.1.1.1.6 (64-bit Octets in counter) ifHCOutOctets: 1.3.6.1.2.1.31.1.1.1.10 (64-bit Octets out counter) ifHCInUcastPkts: 1.3.6.1.2.1.31.1.1.1.7 (64-bit Packets in counter) ifHCOutUcastPkts: 1.3.6.1.2.1.31.1.1.1.11 (64-bit Packets out counter) ifHighSpeed: 1.3.6.1.2.1.31.1.1.1.15 (An estimate of the interface’s current bandwidth in units of 1Mbps) 低速网卡: ...

2024年01月08日 · 1 分钟 · 136 字 · 八戒

Linux下配置Modem拨号

公司为了跟建设银行建立专线,首先用电话线拨号进行测试。 买回来一个外置的Modem,接在服务器的com1口上,先用电话测试一下,OK没问题,那就继续配modem拨号 Linux下配置Modem拨号有两种方式,传统的pppd方式和简单的wvdial方式。 一、wvdial配置 wvdial的配置方法超级简单, 执行命令:wvdialconf /etc/wvdial.conf 它会自动测出系统的Modem,稍微修改一下,加几个参数: vi /etc/wvdial.conf [Dialer Defaults] Modem = /dev/ttyS0 Baud = 115200 Init1 = ATZ Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 ISDN = 0 Auto Reconnect = on Modem Type = Analog Modem Phone =0,28929191 Username = ttt Password = qqq 这就弄好了,执行wvdail &就可以拨号了,结束也很简单,kill -9 杀掉wvdial和ppd进程即可。 注意:wvdial 拨通后系统多了一块网卡ppp0,路由信息都未修改,为了能到达建行的服务器,需要编辑/etc/ppp/ip-up文件,加一句: route add -host 12.0.98.150 gw 12.0.98.236 然后重拨ping一下,ping 12.0.98.150,能ping通就说明ok了。 二、pppd配置 wvdial隐藏了很多信息,我们下面用pppd来看看真实的拨号过程吧: 其实modem拨号认证的方式有两种,一种是显示明文的login:(username:)方式,另一种是显示乱码的pap(chap)方式。 ①首先: vi /etc/ppp/options lock crtscts defaultroute noauth ②清理一下老的连接: killall pppd rm /var/lock/LCK..ttyS0 ③找出认证的方式: /usr/sbin/pppd /dev/ttyS0 115200 debug connect "/usr/sbin/chat -v '' 'AT&F0' OK ATD0,28929191 CONNECT 'dc' " less /var/log/messages ...

2024年01月08日 · 2 分钟 · 272 字 · 八戒

docker lxc类型容器自启动以及自动执行命令

我们的容器采用的是lxc类型,一是为了固定ip,二是避开iptable类型转发的方式。因为我们是强网络管理环境,网络工程师对网络的规划和管控非常强。 这种方式下启动lxc容器倒是很好办,直接编辑/etc/rc.d/rc.local docker start jko2o-16-13-49 docker start vis-16-13-51 docker start vis-16-13-50 docker start vis-16-13-48 docker start vis-16-13-47 就可以开机自动启动容器了。 容器内我们是采用supervisord主进程来保持容器不自动销毁的,那么其他命令如果都加入supervisord,那会非常麻烦。 简单化,用lxc-execute来执行,比较麻烦的就是需要查出来lxc容器的名字,用以下命令查出jko2o-16-13-49的全名: docker inspect -f '{{.Id}}' jko2o-16-13-49 ebe2e6a1249f6f22334014b0072186dfaee52173f3df06cd826f9e64e7d4c51f 然后编辑/etc/rc.d/rc.local,用lxc-execute执行命令就可以了: #47 lxc-execute -n e223d81ea73551460b82e1977b92ef07e24437cd1f4494470feafd4ff455104b -- service mysqld start lxc-execute -n e223d81ea73551460b82e1977b92ef07e24437cd1f4494470feafd4ff455104b -- service httpd start #48 lxc-execute -n 1075971953b9c79494509bf89131e03bbd5ab0b9a388217bd9b6de7a553016a5 -- //www/wdlinux/init.d/mysqld start lxc-execute -n 1075971953b9c79494509bf89131e03bbd5ab0b9a388217bd9b6de7a553016a5 -- //www/wdlinux/init.d/httpd start lxc-execute -n 1075971953b9c79494509bf89131e03bbd5ab0b9a388217bd9b6de7a553016a5 -- //www/wdlinux/init.d/wdapache start lxc-execute -n 1075971953b9c79494509bf89131e03bbd5ab0b9a388217bd9b6de7a553016a5 -- //www/wdlinux/init.d/nginxd start lxc-execute -n 1075971953b9c79494509bf89131e03bbd5ab0b9a388217bd9b6de7a553016a5 -- //www/wdlinux/init.d/pureftpd start #49 lxc-execute -n ebe2e6a1249f6f22334014b0072186dfaee52173f3df06cd826f9e64e7d4c51f -- /export/servers/nginx178/sbin/nginx #50 lxc-execute -n 5b7e8cd3130d31bae5b089202c7e2092b9daca5f19cc055ce4ee50cf8b789504 -- /export/servers/tomcat/tomcat.sh

2024年01月08日 · 1 分钟 · 85 字 · 八戒

Openvpn服务器端无法开通udp端口的故障排除

openvpn server can’t use udp port 这个问题非常古怪,我们有两个机房。分别在两边假设了openvpn服务器,一个机房的ovpn就完全正常,而另一个机房的openvpn如果是tcp就没问题,如果是udp就报错,无法连接。把正常机房的openvpn完全复制一份拿过去,也是一样报错,太郁闷了! 错误提示是: TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity) 非常古怪啊: 在内网用nc来试验udp是否正常: nc -ul 1194 在内网随便找一台机器测试: nc -u xxxx 1194 然后两边随便输入字符测试,没问题。 然后从公网测试,就出问题了。nc连接上以后,只能发送一次数据,然后管道就断裂了,无法再传数据。 nc -u 公网ip 1194 aaa nc: Write error: Connection refused 百思不得其解啊,试了若干次,才发现问题的症结所在。 错误的那台服务器,有两个网络地址: 172.16.8.4和172.16.8.1 其中8.4的地址是缺省地址,8.1的地址是用ifconfig手动后添加的。 而前端防火墙做得公网映射是映射到了8.1的1194端口 tcp由于双方是要校验来往src地址的,所以没问题,到了udp,只管发不管收,所以udp包就从8.4的缺省地址发出去,导致双方不一致,无法正常接收了。 解决方法也很简单,在openvpn服务器端的配置文件中强行指定local端的ip即可: local 172.16.8.1

2024年01月08日 · 1 分钟 · 54 字 · 八戒

Cisco ASA5520 VPN线路的监控和自动重启

Cisco ASA5520 VPN线路的监控和重启 公司从事第三方支付工作,跟很多银行都有合作关系,拉了很多专线直通银行,双方建立VPN,两端都是Cisco的设备,但是,这些线路有时候会莫名其妙的断掉,关键是程序不知道啊,老是重连,一直等到客服反映客户投诉,查一圈程序后才知道。这在生产环境上可是行不通的,找来了所谓Cisco高手,也搞不明白为什么老断,没办法,于是写了两个监控脚本,使用Ping检测VPN对端的状况,一旦Ping不通,就用脚本登陆防火墙,自动重启VPN。 在安装之前,先安装一个能从命令行发送邮件的软件Email来发送报警邮件,否则每台机器都起sendmail,没什么必要: https://github.com/muquit/mailsend-go #发送实例 mailsend-go -smtp smtp.126.com -port 25 \ auth \ -user xxx@126.com -pass xxx \ -from xxx@126.com -to "xxx@126.com" \ -sub "Test" \ body -msg 'hello world' 126邮箱这里的密码用的是授权码 授权密码,不是邮箱密码 说明一下场景: 210.210.210.3是对端Cisco vpn设备的公网IP 192.168.101.99是建立了VPN后,对端服务器的私网IP地址; 192.168.1.1是己方Cisco ASA5520的私网地址。 #!/bin/sh while [ "1" -eq "1" ] do live=`ping -c4 "192.168.101.99"|wc -l` if [ $live -eq 5 ] ; then /usr/local/bin/mailsend-go -debug -to "ranrui.zhang@rendoumi.com" -from monit@ddky.com -ssl -port 465 -smtp smtp.qiye.aliyun.com \ auth -user "monit@ddky.com" -pass "xxxxxxxx" \ -sub "vpn断了" body -msg "`date +%Y`年`date +%m`月`date +%d`日 vpn断了!!!" \ -cs "utf-8" /usr/local/bin/revpn.sh echo "`date +%Y`年`date +%m`月`date +%d`日 `date +%H`点`date +%M`分 线路不能到达王府井机房,重启VPN。" sleep 60 fi; sleep 60 done 以下是用expect自动登录Cisco路由器重启vpn的脚本 revpn.sh ...

2024年01月08日 · 1 分钟 · 149 字 · 八戒

最新版出国旅行安装一个FreePBX的voip电话自用

新的一年依始,开始定好了旅行计划,但是有个东西却依然心神不宁。 那就是万一在国外有什么变动,如何往国内打电话呢?! 说到这里,不得不提个东西,那就是旅顺的App,这个东西已经消失了,但是绝对值得被记住啊。 这个东西在塞班岛旅游的时候曾经救了自己两次 首先是它的第一代产品: 第一代的原理似乎是把手机的信号直接通过网络转移到了国内,随身携带然后配合app使用,这点非常牛吧!国内的窜出点会随机,忽而天津,忽而别的地方,所以呼出电话搞不好是长途计费。第一次呢八戒是在塞班岛中部那个麦当劳附近,用这个接到了国内的电话,说是出大事了,有人把公司数据库的数据给改了,当时约定下午6:00再打,然后下午在台湾牛肉面的店里,又用这个往国内通了电话,打了半个多小时,领导告知了具体的情况,要是接不起来那可真就麻烦大了。 这个是它第二代的产品: 这个是升级版pro,就更厉害了,直接放家里,手机上下个app,有网络就能用了,不用像第一代一样随身携带了。 这个更是救命了,话说第二回在塞班的时候正是疫情刚发作的时候,塞班直接封岛了,然后好多航班都延期或终止了,就是用这个旅顺打国内电话改签了回国的机票,足足打了两个小时啊,到处占线等待,如果打国际长途的话费用不堪设想,另外打塞班大韩航空的电话改签两程机票也是不可想像的,所以,关键时刻是真的救命啊。 这么好的软件却直接倒闭消失了,真是万分可惜啊。 哎,现在没有这个了,只能自己搭一个voip电话自用了。 刚开始是考虑RasPBX,其实自己用树莓派搭过,费事不说,主要树莓派容易死机,务必要稳定,所以干脆用FreePBX搭建在kvm服务器虚拟机上的方式,来保持绝对稳定。 以下教程只适用于 FreePBX 16 的官方ISO,具体做法如下: 一、安装KVM虚机: #下载FreePBX16的iso光盘 wget https://downloads.freepbxdistro.org/ISO/SNG7-PBX16-64bit-2302-1.iso #创建qcow2虚机文件 qemu-img create -f qcow2 freepbx-8-2-60/freepbx-8-2-60.qcow2 20G virt-install \ --name=freepbx-8-2-60 \ --vcpu=4 \ --ram=8096 \ --disk path=/export/kvm/freepbx-8-2-60/freepbs-8-2-60.qcow2,format=qcow2,size=20 \ --cdrom=/export/kvm/SNG7-PBX16-64bit-2302-1.iso \ --network bridge=br0 \ --os-type=linux \ --vnc --vnclisten=0.0.0.0 --vncport=5916 用vnc连接5916端口安装,设置一下root的密码安装。 这样安装好后,系统其实是dhcp动态获得ip的,进入看了看,是Centos,我们不需要dhcp,把IP给固定死 vi /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE="Ethernet" BOOTPROTO="static" IPADDR=10.8.2.60 NETMASK=255.255.255.0 GATEWAY=10.8.2.1 DNS1=114.114.114.114 DEFROUTE="yes" NAME="eth0" DEVICE="eth0" ONBOOT="yes" SSH登录一下没问题,看到绿框就ok了 二、配置FreePBX的分机 打开网址 http://10.8.2.60 , 登录 FreePBX Administration 登上去后是这个样子 上面我没有开System Firewall,这个看个人需求,绝对不要像公网开放80端口,只开5060的udp和1000-10004的UDP。 ...

2024年01月05日 · 2 分钟 · 349 字 · 八戒

配置Minio+nginx的代理来开放桶内内容

同事有个需求,想开放个域名,给别的同事们下载文件用。 这个其实很建单,问题就是文件怎么放上去,sftp、ftp什么的都需要搭个服务器,其实最简单应该是webdav,但是放公网又不太安全。 本来考虑是用 oss 的桶,前面直接套个CDN,但是如果桶文件泄露被疯狂下载,也会付出银两。 最后做法是用 Minio 弄一个模拟的桶环境,前面配置上 Nginx,带宽限制到1M,这样就无所谓了。同事用另一台机器模拟S3的API往上面放文件供下载。 一、minio的安装 下载二进制文件,简单粗暴启动: #!/bin/bash nohup /app/minio/minio server --address '0.0.0.0:9000' --console-address '0.0.0.0:9001' /app/bucket > /app/minio/minio.log 2>&1 & 这样就启动了,然后网页打开 http://10.10.247.211:9000 ,就可以看到登录界面了 登录后,我们先建立一个Bucket,就叫做pub桶,把pub桶的策略改成public,这样nginx代理的时候才能直接访问到 然后我们上传个图片,BOMS3.0.png,然后去/app/bucket目录下看看 结果发现BOMS3.0.png居然是个目录,进去继续看 meta信息和若干的part,看来这是为多版本准备的,这就是为什么要策略是public的原因,不是就无法从9000访问。 二、安装配置nginx server { listen 80; listen [::]:80; server_name supervisor-task.ddky.com; location / { return 301 https://supervisor-task.ddky.com$request_uri; } } server { listen 443 ssl; server_name supervisor_task.ddky.com; ssl_certificate /etc/nginx/cert/_.ddky.com.crt; ssl_certificate_key /etc/nginx/cert/_.ddky.com.key; ssl_session_timeout 5m; location / { rewrite ^/$ /pub/index.html break; proxy_pass http://10.10.247.211:9000/pub/; proxy_redirect off; } access_log /app/logs/access.log ; error_log /app/logs/error.log; } 主要就是要配置代理,代理到minio的9000端口 ...

2023年12月28日 · 1 分钟 · 81 字 · 八戒

NFS的详细解释

NFS的SERVER分两部分: 1、RPC 主程序:rpcbind NFS 本质是一个 RPC 服务,而要启动任何一个 RPC 服务之前,都需要做好 port 的对应 (mapping) 的工作才行,这个工作其实就是『 rpcbind 』这个服务所负责的!也就是说, 在启动任何一个 RPC 服务之前,我们都需要启动 rpcbind 才行! (在 CentOS 5.x 以前这个软件称为 portmap,在 CentOS 6.x 之后才称为 rpcbind 的!) 2、NFS 主程序:nfs-utils 就是提供 rpc.nfsd 及 rpc.mountd 这两个 NFS daemons 与其他相关 documents 与说明文件、执行文件等的软件!这个就是 NFS 服务所需要的主要软件! 安装服务端NFS Server yum install nfs-utils rpcbind -y sudo apt install nfs-kernel-server 客户端不提供服务,所以不用装rpcbind yum install nfs-utils sudo apt install nfs-common 将NFS和rpcbind加入开机启动 systemctl enable --now rpcbind systemctl enable --now nfs 客户端不用启用任何服务 服务端检查是否安装nfs: rpm -qa | grep nfs与 rpm -qa | grep rpcbind即可 停止服务端的nfs server的方法: systemctl stop nfs systemctl stop rpcbind 配置共享目录 在服务端配置一个共享目录 ...

2023年12月28日 · 1 分钟 · 149 字 · 八戒

Kvm虚拟机挂载临时急救iso启动的方法

Kvm虚拟机挂载临时急救iso启动的方法: 首先去到宿主机 编辑虚机文件virsh edit vis-18-32-6 <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <target dev='hda' bus='ide'/> <readonly/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk> 在target下面增加一行source: <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <target dev='hda' bus='ide'/> <source file="/export/kvm/systemrescuecd-x86-5.2.2.iso"/> <readonly/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk> 再修改boot为cdrom,改回去则是hd <os> <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type> <boot dev='cdrom'/> </os> 然后启动虚机就可以了。

2023年12月28日 · 1 分钟 · 51 字 · 八戒