vim/network/ssh语法
一、编辑器——vim
vi编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下。由于不需要图形界面,vi是效率很高的文本编辑器。尽管在Linux上也有很多图形界面的编辑器可用,但vi在系统和服务器管理中的功能是那些图形编辑器所无法比拟的。
Vim是vi的加强版,比vi更容易使用。vi的命令几乎全部都可以在vim上使用。
1、vim三种模式
一般模式: 不能直接编辑文档内容,但可以接受指令处理文档内容或者实现某个功能。
编辑模式:可以编辑文档内容
命令模式: 可以接受可见指令去实现某个功能
2、一般模式
vim编辑器刚打开一个文件时,就是进入一般模式。一些常用的操作如下:
h,j,k,l 左下上右;命令执行前加数字,实现多次执行
Ctrl+f 向后翻页;
Ctrl+b 向前翻页;
0 回到行首
$ 去到行尾
gg 到文件首行;命令执行前加数字,实现多次执行
G 到文件尾行;命令执行前加数字,实现多次执行
w 按单词向后移动光标(跳动于词首);命令执行前加数字,实现多次执行
e 按单词向后移动光标(跳动于词尾);命令执行前加数字,实现多次执行
b 按单词向前移动光标(跳动于词首);命令执行前加数字,实现多次执行
H 跳到文件头部
M 跳到文件中部
L 跳到文件尾部
zt 使当前行处于屏幕顶;(top)
zz 使当前行处于屏幕中;
zb 使当前行处于屏幕底;(bottom)
dd 删除一行,再加一个 p ,就粘贴 ;命令执行前加数字,实现多次执行
dG 删除光标当前行到最后一行的所有数据
dgg 删除光标当前行到第一行的所有数据
d$ 删除光标所在字符到 该行行末
d0 删除光标所在字符到 该行行首
cw 删除光标所在向后的一个单词并且进入编辑状态
dw,de 删除光标处向后的一个单词
yy 复制行;命令执行前加数字,实现多次执行
p/P 粘贴行到当前行之后/之前
ayy 将复制行放入buffer a, vi提供buffer功能,可将常用的数据存在buffer
ap 将放在buffer a的数据粘贴。
b3yy 将三行数据存入buffer b。
b3p 将存在buffer b的资料粘贴
yw, ye, yb, y$, y0 行内复制
r 修改光标所在的那个字符
R 取代字符直到按 Esc 为止
u 撤销上一次操作
U 撤销整行的操作
ctrl + r 重做
v 可视状态,可以通过光标选择指定区域的内容,进行处理(整行)
ctrl + v 功能同上,(整块)
3、编辑模式
从一般模式到编辑模式的命令字符有:i,I,a,A,s,S,o,O
从编辑模式到一般模式。按 Esc
4、命令模式
4.1、进入命令模式,按 ':'
:set nu 显示行号
:set nonu 取消显示行号
:set autoindent 自动对齐,取消方式如第一例
:set all 打印所有选项
:set 显示与系统默认值不同的设置参数
:set noic 查找是忽略大小写
:set list 显示制表符(^I)和行尾符号
:set ts=8 Tab建相当于8个空格
:set hlsearch 设置高亮查找,取消方式如第一例
:syntax on 打开依据程序相关语法显示不同颜色,关闭方法自行
4.2、替换功能
:1,$s/aa/bb 把第一行到最后一行的第一个aa替换成bb, '1,$' 也可使用 '%'替代,也可以直接使用数字指定行
:1,$s/aa/bb/g 把第一行到最后一行的所有aa替换成bb
:1,$s/aa/bb/gc 替换之前进行确认;a确认所有;l确认当前并退出
:1,$s/aa\ /cc/g 空格记得使用 '\' 转义
4.3、查找功能
:g/text1/s/text2/text3 查找包含text1的行,用text3替换text2
:g/text/command 在所有包含text的行运行command所表示的命令
:v/text/command 在所有不包含text的行运行command所表示的命令
:240 == 240gg == 240G 快速把光标定位在240行
/admin 搜索admin关键字
4.4、分屏功能
:split /etc/passwd 多分出一个横屏打开文件 /etc/passwd
:vsplit /etc/passwd 多分出一个竖屏打开文件 /etc/passwd
ctrl + ww 可切换窗口
4.5、退出编辑
q 退出
q! 强行退出
w 保存
wq 先保存后推出 等价于 x
wq! 强行保存并退出
4.6、更多功能
在(, [, { 上面输入 % 即可跳到相对应的另外一个括号上
. 代表一个任意字符
^ 以什么开头
$ 以什么结尾
:%s/./U/ 实现: 文档中的每行的第一个字母都替换成U
#vim /etc/vimrc
set tabstop=4 --tab键退四格
set shiftwidth=4 -- shift + > 也为退四格
4.7、配置vim
# vim /etc/vimrc
set nobackup --保存之前不备份
set tabstop=4 --用于按Tab 键时
set softtabstop=4 --用于删除
set expandtab --把Tab 键转换成n个空格键,数量n=abstop
set autoindent --自动缩进
set shiftwidth=4 --用户缩进对齐时
set fileencoding=utf8 --用于写文档时确定编码
set fileencodings=utf8,gbk,gb18030,big5,gb2312 --用于读文档时做编码识别
set hidden --多文档编辑时,不需要保存,直接在文档之间切换
set confirm --提示保存
二、简单的网络配置
1、NetworkManager服务
NetworkManager简介:NetworkManager由一个管理系统网络连接、并且将其状态通过D-BUS进行报告的后台服务,以及一个允许用户管理网络连接的客户端程序。优点:简化网络连接的工作,让桌面本身和其他应用程序能感知网络。但对于我们来说没必要,而且很没必要;我们作为专业人员,要自己管理自己的网络。该服务反而给我们添加一定的麻烦。所以
# service NetworkManager stop --关闭服务
# chkconfig --level 35 NetworkManager off --开机不自启动
2、网络入门
linux操作系统,网卡默认命名是eth?
# ifconfig -a --找到自己计算机上所有网卡
# lspci | grep -i eth --查看当前系统所连接的所有网卡
# mii-tool eth0 --查看网卡 eth0 是否连接网络
# ifconfig --输出所有当前正在使用的网卡
# ifconfig eth0 --查看指定网卡的信息
# ifconfig eth0 172.16.1.144 netmask 255.255.255.0 --临时设定IP和掩码
# service network restart --重启网络后,我们临时设置的网络就会失效
上互联网的三要素:IP,Gateway,DNS
3、通过配置文件永久设置网卡
# vim /etc/sysconfig/network-scripts/ifcfg-eth0 --该配置不会马上生效
DEVICE=eth0 --设备名
ONBOOT=yes --网络服务启动的时候,yes代表激活状态 , no 代表禁用
HWADDR=14:da:e9:eb:a9:61 --强烈建议不要删除,而且保证MAC地址正确
BOOTPROTO=static --dhcp动态获取IP, none 根据其他选项决定动态还是静态,static是指手工指定IP
NM_CONTROLLED=no --如果NetworkManager服务启用,该网卡配置文件也不使用NetworkManager管理
IPADDR=172.16.2.10 --自己手动设置的IP地址
NETMASK=255.255.0.0 --子网掩码
GATEWAY=172.16.2.1 --如果该网卡激活,那么就系统添加一个网关,可选。一般不建议在这里写
# service network restart --这是一种让上面配置马上生效的方法,还有一中是重启系统
4、网关设定
作用:允许不同网络直接通信。网关往往是路由器上某个接口
# route -n --查看路由表。决定数据包应该如何发送出去的表格
# route add default gw 10.172.16.1 --临时的添加网关
# route del default gw 10.172.16.1 --删除默认网关
# route del -net 169.254.0.0 netmask 255.255.0.0 dev eth1 --删除普通的路由表数据
# vim /etc/sysconfig/network --永久添加默认网关。
NETWORKING=yes --是否启用网络功能(no: service network start 没有任何回应)
HOSTNAME=www.upl.com --设定主机名
GATEWAY=172.16.1.1 --设定默认网关
5、设定主机名
操作系统在运作过程中,可以给它起个名字,通过名字进行通信。在上个配置中就是永久配置
FQDN(完全规范的主机名),一般是 用 . 作为分割符号。入下
www.baidu.com --主机头.域.域
# hostname
# uname -n --查看主机名
# hostname node7.upl.com --命令临时设定或更改主机名
# vim /etc/hosts --前面的默认两行千万别修改,别删除。强烈建议大家把自己的主机名和自己的主IP进行绑定
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.2.7 node7.upl.com
# ping node7.upl.com --通过自己的主机名 ping 自己
6、指定 DNS 域名
作用:把域名解析成IP。
# vim /etc/resolv.conf --指定DNS域名服务器
nameserver 114.114.114.114
注意:一定记得关闭 NetworkManager 服务。否则重启网络时,该配置会被清除
7、一张网卡配置多个IP
# ifconfig eth0:1 10.1.1.244 netmask 255.255.255.0 --临时配置
# vim /etc/sysconfig/network-scripts/ifcfg-eth0:1 --永久配置子接口
DEVICE=eth0:1
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.1.1.7
NETMASK=255.255.0.0
8、网卡开关控制
# ifconfig eth0 down --临时关闭网卡
# ifconfig eth0 up --开启时,不会读取配置文件
# ifdown eth0 --彻底关闭网卡
# ifup eth0 --开启式,会读取各网络配置文件
9、网络故障排错
# mii-tool --有可能明明连接了有效的网线,但是还是看不到link ok,可以先确定网卡配置文件是正确的,并且ONBOOT=yes ,然后重启network服务(service network restart)
# ping 127.0.0.1 --通,代表系统能够支持tcp/ip通信。不通,原因: 相关驱动损坏或者没有。防火墙iptables拦截了。
# ping 网关
不通;原因: 网关有问题,或者IP冲突
解决方法:ping 同一个网段中其他IP;其他计算机 ping 网关
# ping 外网(IP或域名)
ping 外网IP。通,只能说明通信没问题,网关是设定正确;不通,很可能就是网关无法联网
ping 域名。如果连域名对应的IP都无法返回,说明域名解析失败,原因:DNS设定有问题。
# ping 的错误
network unreachable (网络不可达): --一般没有设定正确的网关
unknow host xxxx : --设定DNS无效
10、了解DNS
# nslookup www.baidu.com
# dig www.baidu.com
# host www.baidu.com
11、远程登录
# ssh root@IPADDR --远程登录必须网络相通
# ssh -Y u1@10.1.1.7 --远程登录并允许运行远程机上的图形软件。符号 -Y/-X
12、netstat
用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。
# netstat -tupn -- t,可显示tcp; u,可显示udp; p,显示pid; n,以端口数显示
# netstat -tupna -- -a 参数,列出所有网络相关信息;默认只显示 stat 为 ESTABLISHED
# netstat -tupnl -- -l 参数, 不列出stat 为 ESTABLISHED
三、网络拓展
1、一次虚拟多个IP地址
# vim /etc/sysconfig/network-scripts/ifcfg-eth1-range0
IPADDR_START=192.168.133.110 --虚拟的IP起始值
IPADDR_END=192.168.133.120 --虚拟的IP结束值
NETMASK=255.255.255.0 --子网掩码
CLONENUM_START=110 --指eth1: 后的数字起始值
# service network restart
# ifconfig
2、路由的管理
# route add default gw 172.16.1.1 --添加一条默认路由其实就是增加一个网关
# route add -net 10.1.3.0/24 dev eth0 --添加直连路由(到设备)
# route add -net 10.1.2.0/24 gw 10.1.1.2 --添加到达指定网络的路由
# route add -host 10.1.3.1 gw 10.1.1.3 --添加到达指定主机的路由
要删除以上路由,格式基本不变。只需将 'add' 改为 'del' 即可
3、IP地址的分类参考(不必记住):
A 以0开头(二进制码)
0.0.0.1 - 127.255.255.255
默认子网掩码: 255.0.0.0
B 以10开头(二进制码)
128.0.0.0 - 191.255.255.255
默认子网掩码: 255.255.0.0
C 以110开头(二进制码)
192.0.0.0 - 223.255.255.255
默认子网掩码:255.255.255.0
D 以1110开头(二进制码) 组播
224.0.0.0 - 239.255.255.255
E 以1111开头(二进制码)
240.0.0.0 - 247.255.255.255
4、记住三个私网IP段
A类: 10.0.0.0 - 10.255.255.255
B类: 172.16.0.0 - 172.31.255.255
C类: 192.168.0.0 - 192.168.255.255
5、特殊的网络地址
0.0.0.0 --代表全世界所有的地址
127.0.0.1 - 127.255.255.255 --本地环回地址,测试本机tcp/ip是否正常。某些集群软件也会使用环回地址(lvs集群的DR(direct routing)架构会使用环回地址)
6、查看网卡工具
# ethtool eth0
7、常用的网络管理命令及常见的客户端工具
arp -- 管理网卡物理地址和IP地址的对应关系
ping -- 测试网络的连通性
nmap -- 端口扫描工具
traceroute -- 路由追踪工具
lftp -- ftp 客户端
elinks -- 命令行的网页浏览器
wget -- 命令行的下载工具 (-c, 继续未完成的任务)
nslookup -- 查询域名
dig -- 查询域名
三、ssh
安全的链接方式,可用于远程登录,传输文件,创建加密隧道等;
1、远程登录:
# ssh user@hostname/ipaddress --远程命令行
# ssh -X/Y user@hostname/ipaddress --远程图形界面
# ssh root@192.168.1.33
2、远程传输文件
# scp /etc/passwd root@192.168.1.33:/etc/ --本地传到远程机
# scp root@192.168.1.33:/etc/passwd /etc/ --远程传到本地,加 -r 参数,可传输文件夹
3、其他
# echo something | ssh user@host.com "cat > /somewhere/file" --将本机 echo 出来的字符串,在远程机上 cat 出来,并且重定向 输入到远程机的 /tmp/file 文件中
# echo george | ssh root@192.168.1.33 "cat " --在远程机上运行 cat 命令,命令的输出结果在本地显示
# echo george | ssh root@192.168.1.33 "passwd --stdin guo" ----在本地机上将 远程机的账户 guo 的密码改为 george.
4、配置ssh证书登录方式
4.1、服务器
# cd /root/.ssh
# rm -rf *
# ssh-keygen -t rsa -b 4096 --创建一组秘钥,可一路回车,有特殊要求可自行琢磨
# ls --生成一个私钥,一个公钥
id_rsa id_rsa.pub
# cat id_rsa.pub > authorized_keys --将公钥内容导入文件authorized_keys
# scp id_rsa root@10.1.1.67:/root/ --讲私钥传给需要连接过来的客户端
4.2、客户端
# cat id_rsa >> .ssh/id_rsa
# ssh root@10.1.1.66 --即可可直接在客户端上登录服务端。不需要密码
4.3、排错
# ssh root@192.168.133.100 --如果出现以下错误,无法使用公钥登录,服务器仍询问登录密码
Agent admitted failure to sign using the key.
u11@10.1.1.3's password:
解决方法:
# unset SSH_AUTH_SOCK --删除变量SSH_AUTH_SOCK
# ssh-add ~/.ssh/id_rsa --用ssh-add 命令添加刚刚创建的私钥