Python 基础 01-常量和变量

Python 基础 01-常量和变量

常量

常量:值不能改变的量。

数字常量:1 100 3.5

  • 整数类型常量
  • 浮点数类型常量

字符串常量: ‘a’ “123” ‘'’可以跨越多行’’’

  • 单引号
  • 双引号
  • 三引号

布尔值常量:True False

首字母大写

高级类型常量: [] {}

  • 列表:[]
  • 字典:{}

变量

变量:值能够改变的量。

通过等号改变它的值,也就是赋值。


a = 1
a = 20		# 改变了值
a = "hi"	# 改变了数据类型

变量命名

  • 只能包含数字、字母和下划线
  • 数字不能开头 12name 是非法的变量名
  • 区分大小写 Aname 和 anmae 是不同的变量

运维相关网站

引言

把我经常看的一些运维相关资讯网站总结一下(不定期更新)。

运维相关网站

运维派 - IT运维技术社区_运维学习交流平台_DevOps_自动化运维
InfoQ 运维

光猫桥接路由器

引言

最近办理了北京联通的光纤宽带,自带的光猫自带了拨号、路由、无线等功能,
我不想使用这些自带的功能,只想把光猫作为纯粹的调制解调器,拨号、路由、无线等功能交由另一个高配置的无线路由器。 所以就需要将光猫桥接到这个无线路由器。这其中有些问题需要注意。
先学习了解下 Ref 中的相关资料,然后根据这些资料来确定自己的桥接步骤。

光猫桥接路由器步骤

  1. 光猫破解开启桥接功能,关闭无线功能
  2. 光猫 LAN 口和无线路由器 WAN 口

具体操作根据自己的实际情况来。 有人会碰到这个问题:光猫管理 IP 是 192.168.1.1,路由器管理 IP 也是 192.168.1.1,如何同时访问光猫和路由器的管理界面?

下面是一种解决方法:


光猫如果设置为桥接模式,而且接在路由器 WAN 口,
那其实猫的 IP 地址跟路由器 LAN IP 地址也不会冲突,所以路由器依然可以用 192.168.1.1。

1. 拨号以后路由器 WAN 口会分配公网地址,跟猫本身就不在一个网段,无法通讯
2. 不拨号,则 WAN 口无地址,也跟猫无法通讯

若要既能上网也可以访问猫和路由,也有个简单的做法(未验证),
若猫有多个 LAN 口,可以改猫的地址为 192.168.1.2 并多接一条线从猫 LAN 口到路由器 LAN 口。
因光猫在三层上面若放在路由器 WAN 口侧,是完全被 bypass 掉了,应该无法通过正常的路由方式访问。

Ref

从性能角度,以下方案,无线路由器如何连接光纤猫最好?
光猫桥接模式与路由模式有什么区别
有谁可以告诉我光猫破解到底是为了什么?
光猫桥接路由器的问题
请教北京联通中兴 F427za 光猫如何改桥接
我自己发个F427Za折腾过程中的问题吧
如何设置北京联通光猫为桥接模式

OpenWrt 简介

引言

最近在看无线路由器,无线路由器是嵌入式计算设备,它自带的是官方固件, 如果想换成第三方的固件,OpenWrt 就是一个选择(具体是否支持请查看官方硬件支持列表)。
下面对 OpenWrt 进行一个简单了解。

OpenWrt 简介


OpenWrt is described as a Linux distribution for embedded devices.

Instead of trying to create a single, static firmware, 
OpenWrt provides a fully writable filesystem with package management.
This frees you from the application selection and configuration provided by the vendor
and allows you to customize the device through the use of packages to suit any application.
For developer, 
OpenWrt is the framework to build an application without having to build a complete firmware around it;
for users this means the ability for full customization, to use the device in ways never envisioned.


OpenWrt 项目始于 2004 年 1 月。
最早的 OpenWrt 版本基于 Linksys 为遵守 GPL 而放出的、为 WRT54G 所编写的代码,以及 uclibc 项目的 buildroot。 

Linksys 放出了 WRT54G 的源代码之后,
开源爱好者便清楚了 Linksys 是如何操作这些硬件的,这样 WRT54G 就从黑盒子变为了白盒子。
OpenWRT 的和 WRT54G 相关的内核驱动的代码都经过了重写,以保证其版权 100% 属于 OpenWRT 的版权所有人。

Ref

OpenWrt
OpenWrt Wikipedia
pandorabox、openwrt、ddwrt 是什么关系? 

Nginx resolver DNS 解析超时问题分析及解决

Nginx resolver DNS 解析超时问题分析及解决

引言

今天一运维同事反映在云游戏平台操作合服时失败,查看任务日志,提示没有合服脚本。
下面记录下问题原因分析及解决过程。

问题原因分析及解决过程

1.没有合服脚本,是没有从对应服务器上下载下来,查看任务日志和下载服务器的日志,提示 HTTP 403 错误。


# Nginx Access Log 日志:

42.51.xx.xx [24/Mar/2017:11:13:20 +0800] "GET /opgame/zmsg/merge/zmsg_merge_tool.sh HTTP/1.0" 403 162 "-" "Wget/1.12 (linux-gnu)" "-" 54.459
42.51.xx.xx [24/Mar/2017:11:16:28 +0800] "GET /opgame/zmsg/merge/zmsg_merge_tool.sh HTTP/1.0" 403 162 "-" "Wget/1.12 (linux-gnu)" "-" 60.008


# Nginx Error Log 日志:

2017/03/24 11:13:20 [error] 31708#0: *237 cmdb.xxxx.cn could not be resolved (110: Operation timed out), client: 42.51.xx.xx, server: duang.xxxx.cc, request: "GET /opgame/zmsg/merge/zmsg_merge_tool.sh HTTP/1.0", subrequest: "/mcode", host: "duang.xxxx.cc:59808"
2017/03/24 11:15:58 [error] 31708#0: *238 cmdb.xxxx.cn could not be resolved (110: Operation timed out), client: 42.51.xx.xx, server: duang.xxxx.cc, request: "GET /opgame/zmsg/merge/zmsg_merge_tool.sh HTTP/1.0", host: "duang.xxxx.cc:59808"
2017/03/24 11:16:28 [error] 31708#0: *238 cmdb.xxxx.cn could not be resolved (110: Operation timed out), client: 42.51.xx.xx, server: duang.xxxx.cc, request: "GET /opgame/zmsg/merge/zmsg_merge_tool.sh HTTP/1.0", subrequest: "/mcode", host: "duang.xxxx.cc:59808"

2.根据 Nginx Error Log 日志判断 Nginx DNS 解析 cmdb.xxxx.cn 超时

我当时第一反应是:既然是超时,先尝试调大超时时间看下。Nginx DNS 解析超时参数为 resolver_timeout。


Syntax:	resolver_timeout time;
Default:	resolver_timeout 30s;
Context:	http, server, location
Sets a timeout for name resolution, for example:
resolver_timeout 5s;

但在这里我先有个疑问:默认的 30s 不够长吗?
于是使用 ping 命令测试 cmdb.xxxx.cn 的解析,返回解析 IP 所花时间只有 10 多秒,Nginx 的 DNS 解析应该不会超时啊?
这时暂时有疑问,继续上面调大 resolver_timeout 到 60s。
重新加载 Nginx,重新下载测试,还是报 cmdb.xxxx.cn could not be resolved (110: Operation timed out) 错误。 那这样应该不是 DNS 超时时间的设置问题?其实一开始我就想更换一下 DNS 服务器看下。

3.更换 Nginx resolver DNS 服务器

Nginx 默认配置的 resolver DNS 服务器是 223.5.5.5,阿里的公共 DNS 服务器。如下:


        location = /token {
            resolver 223.5.5.5;
            internal; proxy_pass http://cmdb.xxxx.cn:8334/token/$arg_query;
        }                                    
                                             
        location = /mcode {                  
            resolver 223.5.5.5;              
            internal; proxy_pass http://cmdb.xxxx.cn:8334/mcode/$arg_query;
        }

更换 Nginx resolver DNS 服务器为 114.114.114.114,重新加载 Nginx,重新下载测试,下载竟然正常了! 说明就是这台服务器到 233.5.5.5 DNS 端口的连接有问题。下面用 telnet 验证如下。


[root@htuidc ~]# telnet 223.5.5.5 53
Trying 223.5.5.5...
telnet: connect to address 223.5.5.5: Connection timed out
[root@htuidc ~]# telnet 114.114.114.114 53
Trying 114.114.114.114...
Connected to 114.114.114.114.
Escape character is '^]'.

其实上面这步验证应该在报 cmdb.xxxx.cn could not be resolved (110: Operation timed out) 错误时就应该去做的。 而不是直接调整 Nginx 的 resolver_timeout。

Ref

ngx_http_core_module.html#resolver
Nginx 的 DNS 解析过程分析