无网不利

《LinuxShell脚本攻略》,Chap-7:无网不利



简介

网络是计算机系统中重要的部分。我们以Tcp/Ip为协议栈,所有操作都是基于它进行的。

一些使用网络的应用通过打开并连接到防火墙端口进行运作,而有的管理任务可以通过网络进行。


网络小知识

网络接口(Interface)用来连接网络。在每个系统中,默认都有一个称之为环回接口的lo,这个接口指向当前主机本身。
操作系统维护者一个被称为路由表(routing table)的表格,它包含了分组如何转发以及通过网络中的哪些节点转发的消息。
metric是路由算法用以确定到达目的地的最佳路径的计量标准,如路径长度。

#显示网络接口、子网掩码等详细信息
ifconfig    #/sbin/ifconfig

#显示某个特定接口
ifconfig eth0

#提取IP地址
ifconfig eth0 | egrep -o "inet [^ ]*" | grep -o "[0-9.]*"

#设置网络接口的IP地址和子网掩码
ifconfig eht0 192.168.1.11
ifconfig eth0 192.168.1.11 netmask 255.255.255.0
#远程的时候,千万别乱改IP,不然连不上你就要去机房了

#MAC地址欺骗
ifconfig eth0 hw ether 11:22:33:44:55:66


#域名服务器与DNS
cat /etc/resolv.conf
#添加域名服务器
echo "name 114.114.114.114" >> /etc/resolv.conf
#nameserver 114.114.114.114

#一个域名可以分配多个地址,DNS只会返回其中一个
#要想获得域名所有IP地址,需要使用DNS查找工具

#DNS查找工具
host www.baidu.com
nslookup www.baidu.com

#自定义解析
cat /etc/hosts
echo "192.168.1.11 www.zhang.me" >> /etc/hosts


#设置默认网关,显示路由表信息
#路由表
route
route -n    #以数字形式显示地址

#设置默认网关
route add default gw $ip $interface
route add default gw 192.168.1.1 eht0

#显示分组途经的所有网关地址
traceroute www.baidu.com


ping

ping使用 网际控制报文协议(Internet Control Message Protocol,ICMP)的echo分组。如果分组能够送达且该主机为活动主机,那它就会发送一条回应。一旦主机不可到达,ping返回错误信息"Destination Host Unreachable"。

ping 192.168.1.1

#往返时间(Round Trip Time,RTT)

#发送分组数量
ping $URL -c 6


列出网络上所有活动主机

当涉及大型局域网时,可能需要检查网络上的其他主机的活动状态。
一台非活动主机可能是:没有开机;网络连接有问题;主机禁ping;防火墙问题。

当我们要检测ip时,在一个脚本中,每一次ping都是依次执行。即使所有的ip地址都是彼此独立,由于编写的是顺式程序(sequential program),ping命令也只能按顺序执行。每次执行一个ping命令。都要经历一段延迟——“发送echo分组,并接收或等待回应超时”。

要是处理几百个ip地址的话,这个延时就真不短了。我们可以使用并行方式来加速所有ping命令的执行。
可以将ping命令中的循环体放入( )& 中,( ) 使其中的命令可作为子shell来执行,& 使之在后台继续运行。

#编写一个并行方式的ping脚本
fo ip in 192.168.1.{1..255}
do
    (
    ping $ip -c2 &> /dev/null;
    if[ $? -eq 0 ]
        then
            echo "$ip is alive"
    fi
    )&
wait
done
#wait命令是脚本只有在所有子进程或后台进程全部终止或完成后才能结束


#使用fping,-a显示活动主机,-g生成目标列表,-u显示无法到达主机
fping -a 192.168.0.0/24 -g 2> /dev/null
fping -a 192.168.0.1 192.168.3.255 -g 2> ./unreach.txt
#将unreach主机找出
cat unreach.txt | egrep -o "to [0-9.]+$" | grep -o "[0-9.]*"


传输文件

有很多不同的方法可以在网络节点上传输文件,常见的协议有FTP, SFTP, RSYNC, SCP

通过FTP传输文件可使用lftp命令;
通过SSH传输文件可使用sftp
RSYNC使用SSHrsync命令;
scp通过SSH进行传输。



文件传输协议(File Transfer Protocol, FTP),使用21端口。FTP是明文传输,So...
需要远程主机上启用了FTP服务器才能使用FTP。

lftp user@ftp-host
#输入密码后便可以操作如下命令
cd -- lcd(本地)
mkdir
get filename    #下载文件
put filename    #上传文件
quit    #退出



SFTP(Secure FTP,安全FTP),运行在SSH连接之上。利用SSH连接模拟FTP接口。
它不需要源端运行FTP服务器,不要运行OpenSSH。SFTP是一个交互式命令,提供了命令提示符。

rsync广泛用于网络文件与系统快照的备份。

SCP(Secure Copy,安全复制),远程文件复制工具。通过SSH加密通过进行传输。

scp SOURCE DESTINATION

scp /path/file user@host:PATH
scp usr@host:/dir/file /home/zhang
#需要输入密码,可以用SSH无秘钥认证

#-r递归复制,-p保持文件权限和模式
scp -r /etc user@host:/tmp
scp -rp user@host:/var/www  /var


SSH无秘钥认证

特别是在定时任务传输备份文件时,无秘钥认证就很方便了。SSH服务默认在22端口,你可以在配置文件中修改。

具体步骤:

  1. 创建SSH密钥(公钥和私钥);
  2. 将客户端公钥上传给需要连接的主机,并写入~/.ssh/authorized_keys文件;
  3. 修改相关目录和文件权限(目录700,文件644);
ssh-keygen -t rsa
#后续操作默认即可
#生成~/.ssh/id_rsa.pub和id_rsa

#写入远程主机
ssh user@host "cat >> ~/.ssh/authorized_keys" < ~/.ssh/id_rsa.pub


用SSH在远程主机上运行命令

#连接远程主机
ssh user@host

#非默认端口
ssh user@host -p 2211

#在远程主机中运行命令
ssh user@host 'command'
ssh user@host 'cmd1'; 'com2'...

ssh user@host 'whoami'

#-C压缩功能,当带宽有限时
ssh -C user@host 'cmd'


在本地挂载远程驱动器

在执行读写数据操作时,通过本地挂载远程主机文件系统。利用SSH和sshfs来实现这一功能。
sshfs是FUSE文件系统的一个扩展,FUSE允许其支持的操作系统像使用本地文件系统一样挂载各类数据。
sshfs允许将远程文件系统挂载到本地挂载点上。

相当于便捷的NFS,但并不需要搭建NFS服务。

SSHFS - filesystem client based on ssh

#挂载远程文件到本地
ssh user@host:PATH /mnt/sshfs

umout /mnt/sshfs


网络流量和端口分析

应用程序在主机上打开端口,然后与远程主机中打开的端口实现通信。
出于安全方面的考虑,必须留意系统中打开及关闭的端口。

恶意软件和rootkit可能会利用特定的端口及服务运行在系统之中,从而进行攻击。
通过分析开放端口列表以及运行在端口上的服务,我们便可以分析并检查恶意软件,保证主机安全。

了解及使用各种端口分析工具。

lsof - list open files
lsof列出系统中开放端口以及运行在端口上的服务的详细信息;

netstat查看开放端口与服务
netstat - 显示网络连接,路由表,接口状态,伪装连接,网络链路信息和组播成员组;

iftop - display bandwidth usage on an interface by host
iftop - 展示带宽使用情况;

ifstat - handy utility to read network interface statistics
ifstat - 展示某时刻网络状态;

nload - displays the current network usage
nload - 可查看系统总带宽;

nethogs - Net top tool grouping bandwidth per process
nethogs- 可查看每个进程流量情况;

ethtool - query or control network driver and hardware settings
ethtool - 检查网卡支持的带宽

#lsof的每一项都对应着一个打开了特定端口的服务
lsof -i

#查看开放端口和服务
netstat -nltp

#查看网络实时状态
iftop

#查看当前网络状态
ifstat

#查看系统带宽
nload

#查看进程流量
nethogs
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,599评论 18 139
  • win7 cmd管理员权限设置 net localgroup administrators 用户名 /add 把“...
    f675b1a02698阅读 5,134评论 0 11
  • 名词延伸 通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。如果把IP地址比作一间房子...
    杨大虾阅读 20,588评论 2 57
  • 1.Linux下如何用命令查看实时日志(完整命令) tail -f 路径.log查看前多少行 tai-200f 路...
    qianyewhy阅读 2,249评论 0 11
  • 羊群 1 它们像一群雪白的绵羊 又一次,迷失归家的方向 在女人胸口上徘徊 即使… 下垂的乳房,寸草不生 配合昏暗的...
    应秋子阅读 334评论 0 3