Linux/Unix tips
目录
Grep, awk and xargs
grep: 过滤
awk:文本分析工具
xargs: 跟其他命令配合如使用,扩展名了
ps -ef | grep frank | grep soft_router | awk '{print $2}' | xargs kill
Tar and Zip
tar -cvf test-tar.tar nvgen_traces >>> create test folder to zip file
tar -xvf test-tar.tar >>> extract tar file
zip -r 661-yang.zip yang
unzip 661-yang.zip
Find command
$find ~ -name "*.txt" -print
$find /(查找范围) -name '查找关键字' -type d <<<查找目录
http://blog.csdn.net/windone0109/article/details/2817792
http://www.qnx.com/developers/docs/6.4.1/neutrino/utilities/f/find.html
http://blog.csdn.net/ldl22847/article/details/761111
GREP常用Option:
-c:只输出匹配行的计数。
-i:不区分大 小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及 行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
$more size.txt | grep -inv 'test' <<<查找不包含“test”的匹配项的行
$more size.txt | grep -inv 'test' >>xxx <<<过滤后的信息重定向到一个文件中,xxx是你的文件名
$grep -E '10G|VID' file <<<查找包含10G或包含VID的行,-E是扩展模式,同等于egrep
$grep -rn 'ALLOWED_HOSTS' * <<<查找在此目录中包括子目录中的所有文件,如果包含关键字,打印出来,非常实用的命令
Pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\<:从匹配正则表达式的行开始。
\>:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求 。
[ – ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
. :所有的单个字符。
* :有字符,长度可以为0。
文本输出太多,可以用下面命令,然后左划线过滤:
在命令后面加 | more. 可以每屏按键后翻。想退出按 q
命令后面加| less ,可以前后翻。想退出按 q
加路由并查看路由表:
$sudo route add -net 10.10.10.0/24 192.168.255.131
Password:
add net 10.10.10.0: gateway 192.168.255.131
$ netstat -r
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default hsrp-10-140-0-0.ci UGSc 31 0 en0
10.10.10/24 192.168.255.131 UGSc 0 0 vmnet8
$ netstat -in
Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll
lo0 16384 <link#1> 64058 0 64058 0 0
关闭防火墙
[root@frank ~]# systemctl stop firewalld.service
[root@frank ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
2020-07-07 更新:关闭ubuntu 防火墙
最近拿ubuntu做测试,发现ipv6流量被防火墙block了。。。花了很长时间才找到原因,由于是测试的是SRv6,所以怀疑内核不稳定,同事还尝试升级了内核。。。按理说ubuntu默认应该是关闭防火墙的。。。用下面命令关闭ubuntu的防火墙:
[root@frank ~]# ufw disable
[root@frank ~]# ufw status
临时开启httpserver,remote直接wget即可
下面的方法只能单进程,简单测试没问题,但没法上生产,如果需要更好的性能,可以安装“caddy”
$ python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...
or
$ python -m http.server <port>
私钥和公钥
加密算法分两种,对称加密和非对称加密。非对称加密需要更多资源,速度慢,但相对更安全;对称加密速度快,但不太安全;这里简单总结下非对称加密,非对称加密有很多算法,如常见的RSA,Diffie-Hellman,DSA
非对称算法计算完后会生成两把钥匙,公钥和私钥。顾名思义,公钥即可以分发给所有人的;而私钥只是自己保留的;对不同秘钥加密会有不同的应用场景
之前在学安全认证时总结过一些,可以参考 http://www.zhaocs.info/security-vpn-theory.html
公钥加密,私钥解密
主要用于数据加密
私钥加密,公钥解密
主要用于数字签名,因为私钥可视为不可泄露,代表个人或机构的,所以如果公钥可以解密,那么可以证明数据分发者没有被篡改
SSH举例
过程主要是Server端拿Client的公钥加密随机数并发给Client;Client用私钥解密,并md5随机数和SessionKey并发给Server;Server 收到后用同样算法计算并对比Client发来的信息,如果匹配,通过认证
经过查找,这篇 图解SSH原理 总结的很好!建议直接跳转查看;所以在这里只实操,不涉及理论。为了防止文章失效,我做了截屏保留,放到这里:
客户端生成公钥私钥
client:~ frank$ cd .ssh
client:.ssh frank$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/frank/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): <<< 真实环境建议增加密码
Enter same passphrase again:
Your identification has been saved in /Users/frank/.ssh/id_rsa.
Your public key has been saved in /Users/frank/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:3zinN8lMY79WaSRDzbaBLQsT4KSlb9MDwrQfFc9FK+o frank@client
The key's randomart image is:
+---[RSA 3072]----+
| . +.+o *o |
| o B .oo+.*.|
| * + +++.o|
| + + .+.o |
| S= + + .|
| ..oo= o.|
| +Eo+.. |
| +* o |
| .. o.. |
+----[SHA256]-----+
client:.ssh frank$ ls -l
total 120
-rw-r--r-- 1 frank staff 751 May 11 2020 config
-rw------- 1 frank staff 2610 Feb 24 11:59 id_rsa <<< 私钥
-rw-r--r-- 1 frank staff 578 Feb 24 11:59 id_rsa.pub <<< 公钥
-rw------- 1 frank staff 23022 Feb 23 19:25 known_hosts
-rw-r--r--@ 1 frank staff 23377 Feb 22 21:00 known_hosts.old
拷贝的Server端
client:.ssh frank$ scp -P xxxxx id_rsa.pub root@x.x.x.x:~/.ssh/authorized_keys
root@x.x.x.x's password:
id_rsa.pub
登录Server端改权限
“authorized_keys”必须是“0600”,如果有更多的client,直接用命令追加公钥即可:
[root@server ~]# cd .ssh
[root@server .ssh]# ls -l
total 4
-rw-r--r-- 1 root root 578 Feb 24 13:04 authorized_keys.pub
[root@server .ssh]# chmod 0600 authorized_keys.pub
[root@server .ssh]# ls -l
total 4
-rw------- 1 root root 578 Feb 24 13:04 authorized_keys.pub
[root@server .ssh]#cat /root/.ssh/other_client_rsa.pub >> /root/.ssh/authorized_keys
关闭默认22端口和密码认证
[root@server ~]# diff /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
18d17
< Port xxxxx
44c43
< PubkeyAuthentication yes
---
> #PubkeyAuthentication yes
66c65
< PasswordAuthentication no
---
> PasswordAuthentication yes
[root@server ~]# systemctl restart sshd.service
建立连接
client:.ssh frank$ ssh -i id_rsa -p xxxxx root@x.x.x.x
Last login: Wed Feb 24 13:46:16 2021 from 64.104.125.227
[root@server ~]#
2020-02 安装并打开流量监控
[root@nso ~]# yum -y install iftop
[root@nso ~]# iftop
interface: ens192
IP address is: 10.75.37.87
MAC address is: 00:50:56:80:32:2c
12.5Kb 25.0Kb 37.5Kb 50.0Kb 62.5Kb
+-------------+--------------+--------------+--------------+--------------
nso => xxx 3.47Kb 3.19Kb 3.19Kb
<= 416b 624b 624b
nso => yyy 0b 566b 566b
<= 0b 1.66Kb 1.66Kb
nso => gateway 672b 504b 504b
<= 672b 504b 504b
--------------------------------------------------------------------------
TX: cum: 2.12KB peak: 4.rates: 4.12Kb 4.23Kb 4.23Kb
RX: 1.38KB 4.47Kb 1.06Kb 2.77Kb 2.77Kb
[root@nso ~]# 3.50KB 8.80Kb 5.19Kb 7.00Kb 7.00Kb
2020-02 安装并使用NSF的cache
针对服务器用NSF搭建的环境,跨广域网挂载非常慢,而且每次都经理很通过的下载,如何解决类似问题?我们可以开启cache,这样第二次打开后就不会有问题了,下面是安装和配置:
[root@nso ~]# yum install -y cachefilesd
[root@nso ~]# cat /etc/cachefilesd.conf
安装后我们要找到NSF的挂载点,然后在NSF中设置cache,可以通过安装lsof这个工具来找到挂载点
[root@nso ~]# sudo yum install lsof
安装后打开lsof并触发一个automount的挂载点,我们可以找到相应的挂载服务器,找到后去automount文件给相应的服务器加上cache标识,如下:
[root@nso ~]# more /etc/auto.indirect |grep /abc/xyz
xxx -rw,hard,intr,quota,fsc frank-server:/abc/xyz
fcs是cache的标识,默认没有,就是要对这个挂载点开启cache;frank-server就是 NSF server的hostname;/abc/xyz就是从lsof中查到的挂载点的真正位置信息;xxx就是/auto目录下自动挂载的目录名称
本文出自 Frank's Blog