在K8S 的ingress上配置HTTP认证的方法如下:

1 . 使用htpasswd创建一个auth文件:

htpasswd -c ./auth myusername
cat auth
myusername:$apr1$78Jyn/1K$ERHKVRPPlzAX8eBtLuvRZ0

2. 创建一个K8S的secret:

kubectl create secret generic mysecret --from-file auth --namespace=monitoring 
kubectl --namespace=monitoring get secret mysecret 
NAME      TYPE    DATA    AGE 
mysecret Opaque   1      106d

3. 通过以下参数将创建的secret与ingress关联起来:

  • ingress.kubernetes.io/auth-type: "basic"
  • ingress.kubernetes.io/auth-secret: "mysecret"
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
 name: prometheus-dashboard
 namespace: monitoring
 annotations:
   kubernetes.io/ingress.class: traefik
   ingress.kubernetes.io/auth-type: "basic"
   ingress.kubernetes.io/auth-secret: "mysecret"
spec:
 rules:
 - host: dashboard.prometheus.example.com
   http:
     paths:
     - backend:
         serviceName: prometheus
         servicePort: 9090

最后创建就可以了:

kubectl create -f prometheus-ingress.yaml -n monitoring

参考:

https://docs.traefik.io/user-guide/kubernetes/

https://docs.traefik.io/configuration/backends/kubernetes/

家里有一个苹果无线键盘,就拿到公司来使用,公司的电脑是Dell 笔记本,安装的windows 10系统。通过在设置-》设备-》蓝牙, 添加蓝牙或其它设备,找到苹果的无线键盘,然后在键盘上输入认证数字、回车后成功连接。

但是在用的时候发现一个问题,有一些特殊按键不能使用,特别是FN键不起作用了,严重影响效率,因为苹果键盘没有HOME和END键,需要使用FN键结合光标键来完成HOME和END键的功能。

猜想是没有驱动的原故,而苹果没有公布windows 的驱动程序,比较难搞,后来想到也许可以从苹果的BOOTCAMP上动动脑子,BOOTCAMP居然能让用户安装windows 10系统,那肯定是有驱动程序的。去苹果官网一看,发现BOOTCAMP只有5.1的版本下载,6.0以上的都没有WEB下载的入口了,而只有6.0以上的版本才支持windows 10。于是在网上找了一个imac BOOTCAMP 6.1.6237的版本试了试。发现居然可以。步骤如下:继续阅读

通过使用nginx的map可以配置按照不同的值(如URL参数,POST值,cooke,http头等等…),来转到不用的后端主机,以实现简单的AB测试环境。

下面为一个配置的例子:

# underscores_in_headers on;
#当使用超过一个map时,下面两个参数需要调大,否则会报错
map_hash_max_size 262144;
map_hash_bucket_size 262144;

#定义3个upstream用于AB测试,用于显示不同的内容,相应下面有建3个虚拟主机端口与此对应
upstream def {
        server 127.0.0.1:8080;
}

upstream a {
        server 127.0.0.1:8081;
}

upstream b {
        server 127.0.0.1:8082;
}

# 定义map,$cookie_aid是指从cookie内取aid的值,当cookie内aid的值为"12345"时,$upserver为a,$upserver我这边是用的是upstrem的名称,其它类似
map $cookie_aid $upserver {
        default                          "def";
        "12345"                          "a";
        "67890"                          "b";
}
# 从$http_pid内取值,是从http header内取pid的的值,当http header内pid的值为"12345"时,$headerpid 为a,其它类似
map $http_pid $headerpid {
        default                          "def";
        "12345"                          "a";
        "67890"                          "b";
}
# 从$host内取值,$host对应的是用户访问的域名,当域名的值为12345.abtest-b.xxxxx.com时,$bserver 为a,其它类似
map $host $bserver {
		12345.abtest-b.xxxxx.com       "a";
		67890.abtest-b.xxxxx.com       "b";
		.abtest-b.xxxxx.com            "def";
		default                        "def";
}
# 从$arg_userid内取值,$arg_userid对应的是用户访问的URL上所带的参数userid的值,当userid的值为12345时,$userid为a,其它类似
map $arg_userid $userid {
        default                          "def";
        "12345"                          "a";
        "67890"                          "b";
}

server {
        listen 80;
        server_name abtest.xxxxx.com;
        charset utf-8;
        root /data/www/a/;
        access_log /data/log/nginx/abtest.internal.weimobdev.com_access.log main;
        error_log /data/log/nginx/abtest.internal.weimobdev.com_error.log info;

        location / {
                # 通过以下的if语句,实现多个变量的判断,当cookie内取aid的值判断完后,再判断http header内pid的值
                if ( $upserver = "def" ) {
                         set $upserver  $headerpid;
                }
                # 由于$upserver我这边是用的是upstrem的名称,所以可以直接转发
                proxy_pass http://$upserver;   
        }
}

server {
        listen 80;
        server_name abtest-b.xxxxx.com *.abtest-b.xxxxx.com;
        charset utf-8;
        root /data/www/a/;
        access_log /data/log/nginx/abtest-b.xxxxx.com_access.log main;
        error_log /data/log/nginx/abtest-b.xxxxx.com_error.log info;

        location / {
                # 通过以下的if语句,实现多个变量的判断,当$host内的域名判断完后,再判断URL上所带的参数userid的值
                if ( $bserver = "def" ) {
                         set $bserver $userid;
                }
                # 
                proxy_pass http://$bserver;
        }
}

server {
        listen 8080;
        charset utf-8;
        root /data/www/default/;
        access_log /data/log/nginx/default.log;
}

server {
        listen 8081;
        charset utf-8;
        root /data/www/a/;
        access_log /data/log/nginx/a.log;
}

server {
        listen 8082;
        charset utf-8;
        root /data/www/b/;
        access_log /data/log/nginx/b.log;
}

继续阅读

1.目录

linux下通过命令访问url的方式有多种,主要如下

2.1.elinks

elinks – lynx-like替代角色模式WWW的浏览器

例如: elinks –dump http://www.baidu.com

2.1.2.wget

这个会将访问的首页下载到本地

[root@el5-mq2 ~]# wget http://www.baidu.com

3.3.curl

curl会显示出源码

curl http://www.baidu.com/index.html

4.4.lynx

lynx http://www.baidu.com

5.5.curl使用实践

现在有个需求,因为服务器在收集访问数据,抓取cookie中的value,模拟url访问时需要带上cookie参数,curl命令刚好能完成这个功能。
首先查看帮助:
curl -h
 -b/–cookie <name=string/file> Cookie string or file to read cookies from (H)
 -c/–cookie-jar <file> Write cookies to this file after operation (H)
    –create-dirs   Create necessary local directory hierarchy
    –crlf          Convert LF to CRLF in upload
    –crlfile <file> Get a CRL list in PEM format from the given file
可以使用-b参数来完成,具体使用如下:
  curl –b “key1=val1;key2=val2;”
或直接使用文件
curl -b ./cookie.txt
编写测试实例:
curl -b “user_trace_token=20150518150621-02994ed9a0fb42d1906a56258e072fc4;LGUID=20150515135257-a33a769c-fac6-11e4-91ce-5254005c3644” http://10.10.26.164:1235/click?v=1&logtype=deliver&position=home_hot-0&orderid=10197777&userid=1942556&positionid=148&url=http%3a%2f%2fwww.lagou.com%2fjobs%2f317000.html%3fsource%3dhome_hot%26i%3dhome_hot-5&fromsite=http%3a%2f%2fwww.lagou.com%2fzhaopin%2fAndroid%3flabelWords%3dlabel%26utm_source%3dAD__baidu_pinzhuan%26utm_medium%3dsem%26utm_campaign%3dSEM&optime=2015-06-15_20:00:00
发现这样还是不可以,url附带的参数取不到。使用-d 参数传递url参数,使用-G 把请求方式配置为GET就OK了,如下:
curl -b “user_trace_token=20150518150621-02994ed9a0fb42d1906a56258e072fc4;LGUID=20150515135257-a33a769c-fac6-11e4-91ce-5254005c3644;LGSID=20150518150621-02994ed9a0fb42d1906a56258e072fc4;LGRID=20150617230732-4ea87972-1580-11e5-9a88-000c29653e90;” -d “v=1&logtype=deliver&position=i_home-1&orderid=10197777&userid=1942556&positionid=148&url=http%3a%2f%2fwww.lagou.com%2fjobs%2f317000.html%3fsource%3dhome_hot%26i%3dhome_hot-5&fromsite=http%3a%2f%2fwww.lagou.com%2fzhaopin%2fAndroid%3flabelWords%3dlabel%26utm_source%3dAD__baidu_pinzhuan%26utm_medium%3dsem%26utm_campaign%3dSEM&optime=2015-06-15_20:00:00”    -G  http://10.10.26.164:1235/click
想要获得response返回的cookie怎么办,使用’-c’参数,同时可以使用-b filename用文件方式表示cookie,配合-c使用更方便
可以先用-c 命令生成一个cookie文件作为模板,再修改这个文件作为-b 参数的文件名。
使用如下:
curl -b c1.txt -c c2.txt -d “v=1&_v=j31&a=406405635&t=pageview&_s=1&dr=http%3a%2f%2fwww.sogou.com%2ftuguang&dl=http%3A%2F%2Fwww.lagou.com%2F%3futm_source%3dad_sougou_pingzhuan&ul=zh-cn&de=UTF-8&dt=%E6%8B%89%E5%8B%BE%E7%BD%91-%E6%9C%80%E4%B8%93%E4%B8%9A%E7%9A%84%E4%BA%92%E8%81%94%E7%BD%91%E6%8B%9B%E8%81%98%E5%B9%B3%E5%8F%B0&sd=24-bit&sr=1600×900&vp=1583×291&je=1&fl=18.0%20r0&_u=MACAAAQBK~&jid=&cid=1312768212.1431333683&tid=UA-41268416-1&z=1204746223”    -G  http://192.168.52.130:1234/collect
生成的c2.txt内容如下:
# Netscape HTTP Cookie File
# http://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.192.168.52.130 FALSE / FALSE 1757574737 user_trace_token 20150914151217-eedd019e-5aaf-11e5-8a69-000c29653e90
192.168.52.130 FALSE / FALSE 1442217595 LGSID 20150914152955-652a13c5-5ab2-11e5-846d-000c29653e90
192.168.52.130 FALSE / FALSE 1442217595 PRE_UTM
192.168.52.130 FALSE / FALSE 1442217595 PRE_HOST www.huxiu.com
192.168.52.130 FALSE / FALSE 1442217595 PRE_SITE http%3A%2F%2Fwww.huxiu.com%2Ftuguang
192.168.52.130 FALSE / FALSE 1442217595 PRE_LAND http%3A%2F%2Fwww.lagou.com%2F%3F
192.168.52.130 FALSE / FALSE 0 LGRID 20150914152955-652a1630-5ab2-11e5-846d-000c29653e90
192.168.52.130 FALSE / FALSE 1757574737 LGUID 20150914151217-eedd0624-5aaf-11e5-8a69-000c29653e90

转载:AI 数据 » linux 使用curl命令访问url并模拟cookie

MSTP专线由于是光纤通过光猫转换器转换成RJ45的电口到路由器,会导致一个问题,当链路上的光纤有中断时,接到路由器上的电口状态还是UP的,路由器对此无感知,这对我们的监控带来了困扰,因为通常对专线的监控都是监控接口的状态。

根据查询相关资料,监控的方式有以下几种:

  1. 光猫转换器换成光电联动的光猫转换器,这种光猫转换器,光口down后,电口也会down,相应的路由器上的电口也就down了。据说有这种,我没有用过
  2. 思科snmp协议有一个支持远程ping的OID,但是整个过程会很烦锁,当监控多条专线时,需要编程来处理。对这方面有兴趣的可参考:http://www.cnblogs.com/cunshen/articles/163987.html 以及 http://www.cisco.com/c/en/us/support/docs/ip/simple-network-management-protocol-snmp/13383-21.html#examp
  3. 使用路由器的ip sla与eem联动,原理是使用ip sla定时ping对方的接口地址,当发现对方的IP不通后,强制shutdown相应的专线接口。这种方式有一个问题,就是接口shutdown后,在运营商修复线路后,需要人工在设备上启动相应接口,不能自动总是不太好的,特别是节假日无人值班时。可参考http://www.zhaocs.info/sla_eem_1.html

继续阅读

最近收到zabbix的监控报警,是一个交换机重启的误报,提示交换机重启了,但查看后发现实际并没有重启。

我们发现监控是否重启是监控交换同的引导时间,使用的是如下OID:

[root@vm-new-2 ~]# snmpwalk -v 2c -c public 10.99.88.25 1.3.6.1.2.1.1.3.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (2073092193) 239 days, 22:35:21.93

继续阅读

 

在 CentOS 7.x 中可以用 nmcli(Network Manager Command Line Interface:网络管理命令行接口)进行网卡绑定。

多网卡的7种bond模式原理请参考:http://support.huawei.com/huaweiconnect/enterprise/thread-282727.html

官方文档:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/sec-Network_Bonding_Using_the_NetworkManager_Command_Line_Tool_nmcli.html

继续阅读

在生产环境中有时候会经常碰到不能停机维护的情况,或停机窗口时间不够用,比如希望更换存储系统,几十个T或更大的数据,在半天内是迁移不完的,那这个时候就只能在线做了。

下面测试使用LVM的物理卷迁移的方式来在线迁移数据:

1) 物理机已分配2块硬盘sdc,sdd

[root@test-204 ~]# fdisk -l
Disk /dev/sdd: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


Disk /dev/sdc: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

继续阅读

在某此情况下,HP-UX系统上ioscan后容易出现NO_HW状态的盘,比如:

RX2604[/#]ioscan -fNnkC disk
Class     I  H/W Path  Driver S/W State   H/W Type     Description
===================================================================
disk      1  64000/0xfa00/0x0   esdisk   CLAIMED     DEVICE       HP      IR Volume
                      /dev/disk/disk1      /dev/disk/disk1_p2   /dev/rdisk/disk1     /dev/rdisk/disk1_p2
                      /dev/disk/disk1_p1   /dev/disk/disk1_p3   /dev/rdisk/disk1_p1  /dev/rdisk/disk1_p3
disk      3  64000/0xfa00/0x1   esdisk   CLAIMED     DEVICE       TEAC    DVD-ROM DW-224EV
                      /dev/disk/disk3   /dev/rdisk/disk3
disk      9  64000/0xfa00/0xb   esdisk   CLAIMED     DEVICE       DGC     RAID 5
                      /dev/disk/disk9   /dev/rdisk/disk9
disk     11  64000/0xfa00/0xd   esdisk   CLAIMED     DEVICE       HITACHI DF600F
                      /dev/disk/disk11   /dev/rdisk/disk11
disk     15  64000/0xfa00/0x10  esdisk   CLAIMED     DEVICE       HITACHI DF600F
                      /dev/disk/disk15   /dev/rdisk/disk15
disk     23  64000/0xfa00/0x14  esdisk   CLAIMED     DEVICE       HITACHI DF600F
                      /dev/disk/disk23   /dev/rdisk/disk23
disk     28  64000/0xfa00/0x16  esdisk   NO_HW       DEVICE       HP      P2000 G3 FC
                      /dev/disk/disk28   /dev/rdisk/disk28
disk     29  64000/0xfa00/0x17  esdisk   NO_HW       DEVICE       HP      P2000 G3 FC
                      /dev/disk/disk29   /dev/rdisk/disk29
disk     34  64000/0xfa00/0x18  esdisk   CLAIMED     DEVICE       HP      P2000 G3 FC
                      /dev/disk/disk34   /dev/rdisk/disk34
disk     35  64000/0xfa00/0x19  esdisk   CLAIMED     DEVICE       HP      P2000 G3 FC
                      /dev/disk/disk35   /dev/rdisk/disk35
RX2604[/#]

这种情况的出现是因为,disk28和disk29这2块盘之前有使用,后来在HP p2000的存储上删除重新划掉过,而disk34和disk35是新盘,在这台服务器上以前未使用过,所以状态是正常的。继续阅读