`
qindongliang1922
  • 浏览: 2183820 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117530
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:125921
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59900
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71301
社区版块
存档分类
最新评论

shell脚本杂记(四)

阅读更多
1,wget是一个用于文件下载的命令行工具,选项繁多且用法灵活,wget可以下载网页或远程文件,命令: wget url
[root@fse1 919]# wget http://www.cnblogs.com/
--2014-09-20 02:00:48--  http://www.cnblogs.com/
正在解析主机 www.cnblogs.com... 42.121.252.58
正在连接 www.cnblogs.com|42.121.252.58|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:44681 (44K) [text/html]
正在保存至: “index.html.1”

100%[======================================================================================================================================>] 44,681      --.-K/s   in 0.07s   

2014-09-20 02:00:48 (613 KB/s) - 已保存 “index.html.1” [44681/44681])

[root@fse1 919]# 

用-t指定重复次数
wget -t 5 url
或者要求wget不停的重试
wget -t 0 url
下载限速
wget --limit--rate 20k url
也可也用k和m来对指定速度限制,除此之外还可以指定下载的最大配额
wget -Q 100m url
断点续传
wget -c url
复制整个网站
wget --mirror --convert-links url
限制深度
wget -r -N -1 -k DEPTH url
访问需要认证的HTTP或页面
wget --user username --password pass url


2,curl作为一款强力工具,支持http,https,ftp等协议,还支持post,cookie,认证,断点下载,referer,用户代理字符串,扩展头部,限速,文件大小限制,进度条等特性
将下载的文件输出到终端:
curl url
避免显示进度条
curl url --silent
选项-o将下载数据写入文件,而非标准输出中,该文件采用的是url中解析出的文件名:
curl url --silent -O
断点续传
curl -C - url

3,
tar -zxvf xxx.tar.gz解压tar文件
tar -zcvf  打包一个目录,并启动gzip压缩
gzip -n xxx.xx指定一个压缩
1级压缩率最快,但速度最快
9级压缩率高,但速度慢
gunzip xxx.gz解压压缩
zip file.zip file 生成zip压缩
unzip 解压zip

4,查看ip信息ifconfig
查看路由信息route
[root@fse1 919]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.46.0    *               255.255.255.0   U     0      0        0 eth0
link-local      *               255.255.0.0     U     1002   0        0 eth0
default         localhost       0.0.0.0         UG    0      0        0 eth0
[root@fse1 919]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.46.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
0.0.0.0         192.168.46.254  0.0.0.0         UG    0      0        0 eth0
[root@fse1 919]# 



5,ping命令查看网络通信情况,我们使用-c指定ping的组数:
[root@fse1 919]# ping zk1 -c 3
PING zk1 (192.168.46.28) 56(84) bytes of data.
64 bytes from fse1 (192.168.46.28): icmp_seq=1 ttl=64 time=0.023 ms
64 bytes from fse1 (192.168.46.28): icmp_seq=2 ttl=64 time=0.034 ms
64 bytes from fse1 (192.168.46.28): icmp_seq=3 ttl=64 time=0.037 ms

--- zk1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.023/0.031/0.037/0.007 ms
[root@fse1 919]# 


一个小脚本判断网络是否通畅:
ping $1 -c 2

if [ $? -eq 0 ];then

echo "网络成功!"

else

echo "网络失败!"

fi


列出网上,所有活动的主机:

[root@fse1 919]# cat b.sh 


for ip in 192.168.46.{1..255} 
do


ping $ip -c 2 &> /dev/null ;

if  [ $? -eq 0   ];then
echo $ip "处于在线状态"
fi

done
[root@fse1 919]# 


上面的例子只是单线程的ping,速度非常之慢,下面的这个脚本,可以以并行的方式运行,最后使用wait命令阻塞,等待子进程执行完,再结束。

for ip in 192.168.46.{1..255}
do
(

ping $ip -c 2 &> /dev/null ;

if  [ $? -eq 0   ];then
echo $ip "处于在线状态"
fi

)&

done
wait


当然还有更简洁的命令fping,如果你的centos系统没有自带的话,需要执行如下命令安装:
rpm -ivh http://pkgs.repoforge.org/fping/fping-3.1-1.el6.rf.i686.rpm
[root@fse1 919]# fping -a -s -g  192.168.46.1 192.168.46.25     
192.168.46.12
192.168.46.13
192.168.46.15
192.168.46.16
192.168.46.18
192.168.46.20
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.1
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.1
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.1
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.2
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.2
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.2
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.3
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.3
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.3
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.4
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.4
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.4
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.5
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.5
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.5
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.6
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.6
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.6
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.7
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.7
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.7
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.8
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.8
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.8
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.9
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.9
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.9
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.10
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.10
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.10
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.11
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.11
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.11
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.14
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.14
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.14
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.19
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.19
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.19
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.21
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.21
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.21
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.22
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.22
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.22
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.23
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.23
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.23
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.24
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.24
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.24
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.25
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.25
ICMP Host Unreachable from 192.168.46.28 for ICMP Echo sent to 192.168.46.25

      25 targets
       6 alive
      19 unreachable
       0 unknown addresses

      19 timeouts (waiting for response)
      82 ICMP Echos sent
       6 ICMP Echo Replies received
      54 other ICMP received

 0.32 ms (min round trip time)
 1.24 ms (avg round trip time)
 1.85 ms (max round trip time)
        4.716 sec (elapsed real time)

[root@fse1 919]# 


6, ssh host可以连接到远程主机上,如果想在远程主机执行命令可以用:
ssh host "cmd1; cmd2; cmd3"执行,注意一定是放在ssh后面使用,否则不生效

指定一个端口连接ssh host -p 333
ssh的压缩功能:
ssh -C host commands
在远程主机上执行执行图形化命令
ssh host "export DISPLAY=:0; cmd ; cmd ..."
在本地启动图形化命令,操作远程主机
ssh -X host "cmd1;cmd2;cmd3"


scp 可以方便的传输文件
scp -r /home/test host:/home/test

7,创建ssh认证
执行ssh-keygen-t rsa -t -P ''
然后执行ssh-copy-id -i .ssh/id_ras.pub host进行认证

8,ssh进行端口转发
下面的命令将本地主机端口为8000上的流量转上到指定地址的80端口上
ssh -L 8000:www.kernel.org:80 host
如果host不是localhost,那么就是将远程主机端口上的8000流量转发到www.kernel.org的80端口上。

9,非交互式端口转发
ssh -fL 8000:www.abc.com:80 user@host -N
-f指定ssh在执行命令前转入后台模式,-L指定远程的登陆名,-N告诉ssh无需执行命令,只进行端口专发。


10,反向端口转发是SSH最强大的特性之一,如果你有一台无法通过互联网进行访问的主机,但是又希望其他的用户可以访问到这台主机上的服务,那么就是反向端口转发的大显身手的时候了,如果你使用ssh访问一台可以通过互联网访问的远程主机,那么就可以在这台主机上设置反向端口转发,将流量转发到运行服务的本地主机上:

ssh -R 8000:www.abc.com:80 user@host
上述命令会将远程主机端口8000上的流量,转发到本地主机的端口80上,利用这种方法,你在远程主机http://192.168.23.23:8000上访问,那么实际连接的是运行在本地主机端口8000上的web服务器。


11,在本地挂载点上挂载远程驱动器
sshfs -o allow_other host:/home/path /mnt/mountpoint
执行本条命令然后输入密码,现在位于远程主机上/home/path下的数据就可以通过本地挂载点/mnt/mountpoint来访问了。


完成任务后,卸载命令如下umount /mnt/mountpoint

12,网络流量与端口分析
lsof -i查看开放端口以及运行的服务。
netstat -tnp 列出开放端口与服务

13,
创建套接字 nc -l 1234
nc host 1234 连接到该套接字

在网络上进行快速文件复制
在接收端: nc -l 1234 > destion_file
在发送端: nc host 1234 < source_file

14,使用iptables阻塞流量
阻塞发送到特定ip的流量
iptables -A OUTPUT -d 8.8.8.8 -j DROP
阻塞发送到特定端口的流量
iptables -A OUTPUT -p tcp -dropt 21 -j DROP

清楚ip链所作出的所有改动
iptalbes --flush











1
0
分享到:
评论

相关推荐

    LinuxShell脚本学习基础视频

    资源名称:Linux Shell脚本学习基础视频资源目录:【】11a00d99b60c4e2eba3440b8aa3a6bdd【】linux_shell脚本编程_01认识shell,如何编写shell脚本和执行【】linux_shell脚本编程_02vivim简单的常用操作【】linux_...

    109个shell脚本合集.pdf

    Shell脚本合集 Shell脚本是一种脚本语言,利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能。 Shell脚本可以直接使用在Windows、Unix、Linux上面,并且可以调用大量系统内部的功能来解释...

    Shell脚本学习教程PDF版

    Shell脚本,作为Linux/Unix系统中的编程工具,是一种强大的自动化任务执行手段。它基于Bourne shell或者其扩展版本,如bash(Bourne-Again SHell),提供了一种编写简单或复杂程序的方式,使得用户能够通过命令行...

    IDEA中编写并运行shell脚本的实现

    四、脚本文件设置 脚本文件设置是指设置脚本文件的换行符和文件编码。设置换行符为linux换行符,文件编码设置为UTF-8。运行脚本时要注意脚本的编码和控制台的编码是否一致,如果不一致,控制台中的中文就会变成乱码...

    shell脚本编程100例

    shell脚本编程100例 Shell脚本编程是一种强大的编程语言,广泛应用于Linux和Unix操作系统中。本书《shell脚本编程100例》为读者提供了100个实战性的shell脚本编程实例,涵盖了检测网段主机状态、猜数字游戏、打印...

    Shell脚本中获取进程ID的方法

    我该如何在shell脚本中得到PID。 当我在执行shell脚本时,它会启动一个叫子shell的进程。作为主shell的子进程,子shell将shell脚本中的命令作为批处理运行(因此称为“批处理进程”)。 在某些情况下,你也许想要...

    Shell脚本编程100例

    Shell脚本编程是Linux系统管理中的重要技能,它允许用户自动化执行一系列命令,大大提高工作效率。以下是一些关于Shell脚本编程的关键知识点: 1. **Hello World脚本**:这是所有编程语言的基础,用于验证环境设置...

    250个shell脚本

    Shell脚本是Linux/Unix操作系统中的强大工具,它允许用户编写一系列命令,形成自动化任务,以提高工作效率。本文档收集了250个实用的Shell脚本实例,涵盖了多个应用场景,包括系统管理、安全防护、数据库备份等核心...

    Linux 命令与Shell 脚本编程pdf书籍

    《Linux命令行与Shell脚本编程大全》是一本专为Linux初学者编写的经典教材,旨在帮助读者深入理解和掌握Linux操作系统中的基本命令行操作以及Shell脚本编程技术。这本书全面覆盖了从基础到进阶的各种主题,对于想要...

    shell脚本与Makefile区别.docx

    "shell脚本与Makefile区别" shell 脚本和 Makefile 是两个不同的工具,它们都用于自动化构建和编译过程,但是它们有很大的不同之处。本文将详细介绍 shell 脚本和 Makefile 的区别。 首先,shell 脚本和 Makefile ...

    C语言中文网shell脚本教程

    **C语言中文网shell脚本教程** 这是一份关于Shell脚本编程的离线学习资料,包含了一系列HTML文件,旨在帮助用户深入理解并掌握Linux Shell脚本编程技术。以下是其中涉及的一些关键知识点: 1. **Shell命令的本质**...

    如何让Android系统或Android应用执行shell脚本

    Android 系统或 Android 应用执行 shell 脚本的方法 Android 系统或 Android 应用执行 shell 脚本是 Android 开发中的一项重要技术,通过执行 shell 脚本,可以实现一些复杂的操作,例如设置网络参数、启动服务等...

    解决Unity不能调用shell脚本传递参数的问题

    ### 解决Unity不能调用shell脚本传递参数的问题 在Unity开发过程中,有时我们需要与操作系统进行交互,例如执行shell脚本来处理一些特定的任务。但在实际操作中,可能会遇到Unity无法正确调用shell脚本并传递参数的...

    android系统中调用shell脚本

    在Android系统中,由于安全性和权限的限制,直接调用shell脚本并不像在Linux或Unix环境下那样简单。然而,对于非root用户来说,确实有一些方法可以实现对shell脚本的调用,尤其是在开发和调试过程中。下面我们将深入...

    linux下shell脚本实现数据的导出

    在Linux环境下,shell脚本是自动化任务的强大工具,尤其对于数据导出这样的操作,通过编写shell脚本可以方便地实现定期备份或者按需导出。本文将深入讲解如何使用shell脚本来实现数据的导出,并结合Java代码进行调用...

    linux命令行与shell脚本编程.pdf

    linux命令行与shell脚本编程.pdf

    shell脚本大全

    在IT领域,Shell脚本是Linux和Unix操作系统中不可或缺的一部分,它是一种强大的自动化工具,能够帮助用户执行一系列命令,简化日常任务。"shell脚本大全"这个资源可能包含了大量的示例脚本,涵盖了各种用途和场景,...

    Linux-shell脚本全面学习.pdf

    Linux Shell 脚本编程基础知识点总结 Linux 脚本编写基础 1.1 语法基本介绍 * `#!` 符号用来告诉系统它后面的参数是用来执行该文件的程序 * 在 Linux 中,使用 `/bin/sh` 来执行程序 * 编辑好脚本后,需要使其可...

    Shell脚本-从入门到精通.ppt

    四、shell脚本的控制结构 1. if条件结构:if condition then action fi 2. case选择结构:case variable in pattern1) action1;; pattern2) action2;; esac 3. for循环结构:for variable in list do action done...

Global site tag (gtag.js) - Google Analytics