欢迎各位兄弟 发布技术文章

这里的技术是共享的

切图工具 ps 插件 有大用 有大大用

马哥 今日小技巧 Load Balancer后端Nginx封IP的方法 有大用



Load Balancer后端Nginx封IP的方法


set $allow true;




if ($http_x_forwarded_for ~ " ?82.245.163.1$") {


    set $allow false ;


}




if ($allow = false) {


    return 403;


}


普通分类: 

马哥 今日小技巧 网络相关基础命令 有大用

网络相关基础命令

rz   # 通过ssh上传小文件

sz   # 通过ssh下载小文件

ifconfig eth0 down                  # 禁用网卡

ifconfig eth0 up                    # 启用网卡

ifup eth0:0                         # 启用网卡

mii-tool em1                        # 查看网线是否连接

traceroute www.baidu.com            # 测试跳数

vi /etc/resolv.conf                 # 设置DNS  nameserver IP 定义DNS服务器的IP地址

nslookup www.moon.com               # 解析域名IP

dig -x www.baidu.com                # 解析域名IP

普通分类: 

马哥 今日小技巧 iptables实现端口映射 有大用

iptables实现端口映射


# 内网通过有外网IP的机器映射端口

# 内网主机添加路由

route add -net 10.10.20.0 netmask 255.255.255.0 gw 10.10.20.111     # 内网需要添加默认网关,并且网关开启转发

# 网关主机

echo 1 > /proc/sys/net/ipv4/ip_forward       # 在内核里打开ip转发功能

iptables -t nat -A PREROUTING -d 外网IP  -p tcp --dport 9999 -j DNAT --to 10.10.20.55:22    # 进入

iptables -t nat -A POSTROUTING -s 10.10.20.0/24 -j SNAT --to 外网IP                 # 转发回去

iptables -t nat -nL                # 查看转发

python:

python推导式运用

# Python's list comprehensions are awesome.


普通分类: 

马哥 今日小技巧 终端提示显示 有大用

终端提示显示


echo $PS1                   # 环境变量控制提示显示

PS1='[\u@ \H \w \A \@#]\$'

PS1='[\u@\h \W]\$'

python:

python3语法注解

# Python 3.5+ supports 'type annotations' that can be

# used with tools like Mypy to write statically typed Python:


def my_add(a: int, b: int) -> int:

    return a + b

更多历史小技巧,技术交流,岗位内推访问【马哥社区 club.magedu.com】


普通分类: 

马哥 今日小技巧 运用python切片技巧 有大用

# You can clear all elements from a list:

>>> lst = [1, 2, 3, 4, 5]

>>> del lst[:]

>>> lst

[]


# You can replace all elements of a list

# without creating a new list object:

>>> a = lst

>>> lst[:] = [7, 8, 9]

>>> lst

[7, 8, 9]

>>> a

[7, 8, 9]

>>> a is lst

True


# You can also create a (shallow) copy of a list:

>>> b = lst[:]

>>> b

[7, 8, 9]

>>> b is lst

普通分类: 

马哥 今日小技巧 查看系统硬件信息 有大用

查看系统硬件信息

more /proc/meminfo                                       # 查看内存信息

dmidecode                                                # 查看全面硬件信息

dmidecode | grep "Product Name"                          # 查看服务器型号

dmidecode | grep -P -A5 "Memory\s+Device" | grep Size | grep -v Range       # 查看内存插槽

cat /proc/mdstat                                         # 查看软raid信息

cat /proc/scsi/scsi                                      # 查看Dell硬raid信息(IBM、HP需要官方检测工具)

lspci                                                    # 查看硬件信息


普通分类: 

马哥 今日小技巧 按value排序字典 有大用

按value排序字典

Python的内置字典数据类型是无序的,而key可以被用来获取对应的value。有时我们需要根据value对字典中的item进行排序输出。方法如下所示:


方法一:用sorted函数排序,其中key参数是lamda表达式。

a = {'a':100,'b':20, 'c':150, 'd':1}

print(sorted(a.items(), key=lambda x:x[1]))


方法二:用operator.itemgetter而不是lamda表达式进行排序。

from operator import itemgetter

print(sorted(a.items(), key=itemgetter[1]))


方法三:如果只需得到排序后的key,可用.get

print(sorted(a, key=a.get()))       

更多历史小技巧,技术交流,岗位内推访问【马哥社区 club.magedu.com】


普通分类: 

马哥 今日小技巧 屏幕冻结 有大用

程序运行时,终端可能输出大量的日志,你想简单查看一下,又不想记录日志文件,此时可以使用ctrl+s键,冻结屏幕,使得日志不再继续输出,而如果想要恢复,可使用ctrl+q退出冻结。

普通分类: 

马哥 今日小技巧 计算程序运行时间 有大用

计算程序运行时间

有时候执行一个命令或者脚本的的时候需要知道命令执行了多久,那么可以用time  command,例如

shell>  time  backup.sh 


real0m0.014s

user0m0.001s

sys0m0.013s


python:

链式比较

如果想输出数组中介于4-7之间的元素,java是这么写的:if( b > 4 && b < 7){ },但Python更人性化。包括最后一句1 == b < 20,这和C、java也很不一样。

a = 1

print(0<a<2)

print(1==a < 20)


更多历史小技巧,技术交流,岗位内推访问【马哥社区 club.magedu.com】


普通分类: 

马哥 今日小技巧 有时候日志文件是压缩的,那么不解压查看可以用zcat或者zless 有大用

有时候日志文件是压缩的,那么不解压查看可以用zcat或者zless

shell> zcat  log2019.tar.gz 

198.167.223.52 - - [24/Apr/2019:06:40:05 +0800] "GET /acadmin.php HTTP/1.1" 404 564 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36" "-"

103.39.9.213 - - [24/Apr/2019:06:47:57 +0800] "GET / HTTP/1.1" 200 3700 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" "-"

普通分类: 

马哥 今日小技巧 查看压缩包内容 有大用

查看压缩包内容

有时候不想把压缩文件解压,而只是想看一下压缩文件里面都有什么内容,那么可以用:

shell> tar -tf  demo.tar.gz

a/

b/

c/


普通分类: 

马哥 今日小技巧 获取当前目录下占用空间最大的5个文件或目录 有大用

获取当前目录下占用空间最大的5个文件或目录

cd /

du -hsx * | sort -rh | head -5

1.1T /backup

876G /data

3.5G /usr

1.3G /var

1.3G /root

内容来自马哥社区 http://club.magedu.com/topic/5cdcfd3631bf712c432d07b6


普通分类: 

马哥 今日小技巧 通过java启动的tomcat进程获取catalina.home目录 有大用

通过java启动的tomcat进程获取catalina.home目录

1,获取tomcat进程ID

jps | grep Bootstrap

27057 Bootstrap


2,通过进程ID来获取进程信息并过滤出自己想要的信息

ps -ef | grep 27057|grep -v grep | sed -r 's/.*-Dcatalina.home=(\S+)\ .*/\1/'

/usr/local/tomcat


# 为什么要用sed而不是awk呢? 

# 因为tomcat进程中的命令段的长度不是固定的.用awk无法确切的获取到

# 假如说某台主机为了调试或是怎样.需要开启JMX的端口,这个时候tomcat进程的命令段就会多出一些信息


# 上面1 、 2中的命令合为1条如下

ps -ef | grep `jps | grep Bootstrap| awk '{print $1}'`|grep -v grep | sed -r 's/.*-Dcatalina.home=(\S+)\ .*/\1/'


普通分类: 

马哥 今日小技巧 使用md5sum 命令对文件进行校验是否改变 有大用

使用md5sum 命令对文件进行校验是否改变

cd ~/

# 对anaconda-ks.cfg文件计算md5值

md5sum anaconda-ks.cfg

# 计算文件md5值并输出重定向某个文件. 下面有用到

md5sum anaconda-ks.cfg > test.md5

# 批量计算文件的md5值

md5sum install* > test1.md5



# 对比文件是否改变

touch test3 

md5sum test3 > test3.md5

# 对test3文件进行修改

echo 123 >> test3

# 使用md5sum进行校验

md5sum -c test3.md5 

test3: FAILED

md5sum: WARNING: 1 of 1 computed checksum did NOT match


普通分类: 

马哥 今日小技巧 logstash处理日志,通过判断内外网的访问来源并存储至不同的index中 有大用

logstash处理日志,通过判断内外网的访问来源并存储至不同的index中

logstash 配置文件如下参考


input{


}

filter {



}

output {

 if "10.0.0" in [remote_addr] or "192.168.1" in [remote_addr]{

  elasticsearch {

          hosts => "10.0.0.2"

          index => "logstash-nginx-lan-%{+YYYY.MM.dd}"

         }

     }

 else{

  elasticsearch {

          hosts => "10.0.0.2"

    index => "logstash-nginx-wan-%{+YYYY.MM.dd}"

  }

     }

}

普通分类: 

马哥 今日小技巧 ${STR,,}, 把STR中的所有大写字母转换为小写输出(不改变值) 有大用

${STR,,}, 把STR中的所有大写字母转换为小写输出(不改变值)

[root@junun ~]# str1=ABCDE

[root@junun ~]# echo ${str1,,}

abcde

更多历史小技巧,技术交流,岗位内推访问【马哥社区 club.magedu.com】


普通分类: 

马哥 今日小技巧 ${STR^^}, 把STR中的所有小写字母转换为大写输出(不改变值) 有大用

${STR^^}, 把STR中的所有小写字母转换为大写输出(不改变值)

[root@junun ~]# str=abcde

[root@junun ~]# echo ${str^^}

ABCDE

更多历史小技巧,技术交流,岗位内推访问【马哥社区 club.magedu.com】


普通分类: 

马哥 今日小技巧 完全放行forward链 有大用

完全放行forward链

firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -j ACCEPT

firewall-cmd --reload

更多历史小技巧,技术交流,岗位内推访问【马哥社区 club.magedu.com】


普通分类: 

马哥 今日小技巧 sed 执行系统命令。查找当前目录以及子目录中以 ".sh",并改为以".shell"结尾。 有大用

sed 执行系统命令。查找当前目录以及子目录中以 ".sh",并改为以".shell"结尾。

find ./a -type f  -regex ".*\.sh$" | sed -r -n 's#(.*\.)sh$#mv & \1shell#e'

更多历史小技巧,技术交流,岗位内推访问【马哥社区 club.magedu.com】


普通分类: 

马哥 今日小技巧 劫持危险命令 crontab -r 有大用

劫持危险命令 crontab -r


cat > /usr/bin/safecron <<-'EOF'

#!/bin/bash

# remove -r function from crontab

# PATH


if [[ "$*" =~ "-r" ]] ; then

        echo "SB! Dangerous..."

        echo "Exit..."

        exit 2

else

        /usr/bin/crontab $*

        exit 0

fi

EOF


chmod +x /usr/bin/safecron

grep "crontab='/usr/bin/safecron'" /etc/bashrc || echo "alias crontab='/usr/bin/safecron'" >> /etc/bashrc

更多历史小技巧,技术交流,岗位内推访问【马哥社区 club.magedu.com】

普通分类: 

马哥 今日小技巧 每隔两周,在周6的22点30分执行一次mysql完全备份,注意%在crontab下要转义 有大用

每隔两周,在周6的22点30分执行一次mysql完全备份,注意%在crontab下要转义

30 22 * * 6 [ $(/usr/bin/expr $(/bin/date +\%W) % 2) -eq 1 ] && /usr/local/bin/backup_shell/mysql_fullback.sh

更多历史小技巧,技术交流,岗位内推访问【马哥社区 club.magedu.com】


普通分类: 

马哥 今日小技巧 NGINX实现IF语句里的AND,OR多重判断 有大用

nginx 的配置中不支持if条件的逻辑与/逻辑或运算, 并且不支持if的嵌套语法, 我们可以用变量的方式来实现: 原理 就是用 SET 变.

set $rewriteflag 0;

if ($server_port = '80') {

    set $rewriteflag 1;

}

if ($host = 'www.aaa.com') {

    set $rewriteflag 1;

}

if ($uri ~* "^/api.*") {

    set $rewriteflag 0;

}

if ($uri ~* "^/mobile.*") {

    set $rewriteflag 0;

}

if ($uri ~* ".(js|css|html|gif|jpg|png|jpeg)$") {

    set $rewriteflag 0;

}

if ($rewriteflag = '1'){

普通分类: 

马哥 今日小技巧 Python3.8的functools中新增了叫cached_property的装饰器 有大用

Python3.8的functools中新增了叫cached_property的装饰器,看名字应该大概知道什么作用了,看以下例子:

from functors import cached_property

class A:

@cached_property

def say(self):

print(‘****’)

return ‘hello’


a = A()

a.say

以上例子只有第一次访问say属性时才会打印****


普通分类: 

马哥 今日小技巧 Python中的is和==的区别 有大用

Python中的is和==的区别,is时检查对象的标识符是否一致,也就是比较两个对象在内存中的地址是否一样,而==用来检查两个对象是否相等。例如在判断a is b时 相当于在判断id(a) == id(b),a == b 则是调用对象的__eq__方法,相当于a.__eq__(b)。

linux:

Nginx Method Limit

[xxx@xx conf]$ cat http_method_limit.conf

if ($request_method = PUT ) {

    return 403;

}


if ($request_method = TRACE ) {

    return 403;

}


if ($request_method = DELETE ) {

    return 403;

}


普通分类: 

马哥 今日小技巧 通过zip函数同时迭代多个序列,其可迭代次数取决于长度最小的序列。 有大用

通过zip函数同时迭代多个序列,其可迭代次数取决于长度最小的序列。

for a, b in zip(['a', 'b', 'c'], [1, 2, 3]):

    print(a, b)

    

输出结果:

a 1

b 2

c 3

linux:

Nginx Upload Deny

[xx@xxx conf]$ cat deny_uploads.conf

location /uploads/ {

    location ~ .*\.(php|php5)?$ {

        deny all;

    }

}


普通分类: 

马哥 今日小技巧 通过itertools.chain连续迭代多个序列,看以下例子 有大用

通过itertools.chain连续迭代多个序列,看以下例子:

from itertools import chain

a = ['a', 'b', 'c']

b = [1, 2, 3]


for x in chain(a, b):

    print(x)


输出结果:

a

b

c

1

2

3





普通分类: 

马哥 今日小技巧 docker运行的镜像无法上网解决办法 有大用


docker运行的镜像无法上网解决办法

无法上网一般是iptables的问题,是启动docker后iptables -F 的结果.

解决方法,shutdown -r now 即可解决/ 

python:

意外的逗号


>>> def f(x, y,):

...     print(x, y)

...

>>> def g(x=4, y=5,):

...     print(x, y)

...

>>> def h(x, **kwargs,):

  File "<stdin>", line 1

    def h(x, **kwargs,):

                     ^

SyntaxError: invalid syntax

>>> def h(*args,):

  File "<stdin>", line 1

    def h(*args,):

                ^

普通分类: 

马哥 今日小技巧 使用rsync同步远程服务器上的文件时限制流量 有大用

使用rsync同步远程服务器上的文件时限制流量

/usr/bin/rsync -avrtH --bwlimit=2048 rsync://rsync.mirrors.ustc.edu.cn/centos/ 

/data/soft_repos/CentOS/

# --bwlimit=2048  限制同步时的流量 为20Mbps

python:


not key

x = True

y = False

Output:


>>> not x == y

True

>>> x == not y

  File "<input>", line 1

    x == not y

           ^

SyntaxError: invalid syntax

双击查看原图 说明:

运算符的优先级会影响表达式的求值顺序, 而在 Python 中 == 运算符的优先级要高于 not 运算符.

普通分类: 

马哥 今日小技巧 快速查找你需要的命令 有大用

我们都知道man可以查看命令的帮助手册,但是如果我们想要某个功能却不知道使用哪个命令呢?

可以用man -k  command  搜索要执行的命令:

[root@manager ~]# man -k rsync

rsync (1)            - a fast, versatile, remote (and local) file-copying tool

rsyncd.conf (5)      - configuration file for rsync in daemon mode

wcursyncup (3x)      - create curses windows


普通分类: 

页面

Subscribe to 个人技术网_前端_后台_php_div_css_linux_javascript_seo RSS