1 Star 0 Fork 91

wudong / Linux学完就忘系列

forked from baoke / Linux学完就忘系列 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
31.网络客户端工具和while、untill循环.md 7.51 KB
一键复制 编辑 原始数据 按行查看 历史
baoke 提交于 2019-09-05 08:48 . 网络客户端工具

网络客户端工具

ping、lftp、ftp、lftpget、wget等;

ping

send ICMP ECHO_REQUEST to network hosts

ICMP:internet Control Message Protocol 互联网消息控制协议;用于探测互联网上某一特定主机是否在线或某一网络是否在线;
ECHO_REQUEST:回显请求;
ECHO_REPLY:回显应答;

ping [OPTION] destination
-c #:发送的ping包个数;
-w #:ping命令超时时长;
-W #:一次ping操作中,等待对方响应的超时时长;
-s #:指定ping包大小,默认64bytes;

#ping三次终止
ping -c 3 www.baidu.com
#5秒钟后停止ping操作
ping -w 5 www.baidu.com
指定ping包1024bytes
ping -s 1024 www.baidu.com

hping命令(了解)

(package:hping3)
send (almost) arbitrary TCP/IP packets to network hosts

选项:
--fast:快速发ping包;Alias for -i u10000. Hping will send 10 packets for second;
--flood:能发多快发多快,能发多少发多少;

安装:

yum list all | grep 'hping'

yum install -y hping3
#对方来讲显然是一种攻击行为,如果对baidu是hping不了的
hping --fast 127.0.0.1

traceroute命令(了解)

从一个主机到目标主机之间到底经过了哪些路由器;
跟中从源主机到目标主机之间经过的网关有哪些;

ftp命令(用的不多,用lftp为主)

ftp:File Transfer Protocol
ftp服务命令行客户端工具

#安装ftp客户端
yum install ftp -y

lftp命令

lftp用于取代ftp命令;

lftp [-d] [-e cmd] [-p port] [-u user[,pass]] [site]

登录到ftp服务器后的子命令:
get:单文件下载;
mget:多文件下载;
put:单文件上传;
mput:多文件上传;
rm,mrm,删除单文件和删除多文件;

#安装lftp
yum install -y lftp
#-u指明用户名zhangsan来访问ftp服务器
lftp -u zhangsan 172.16.0.1

#-u 用户名,密码的方式来访问ftp服务器
lftp -u zhangsan,123456 172.16.0.1

lftpget命令

lftp专用的下载工具

lftpget [-c] [-d] [-v] URL [URL...]

-c:断点续传,继续此前的下载;

lftpget http://fastsoft.onlinedown.net/down/idm_ald.exe

wget命令

非交互式的网络下载器

wget [option]... [URL]...
-b:在后台执行下载操作;
-q:静默模式,不显示下载进度;
-O file:下载的文件的保存位置和文件名;
-c:断点续传,继续此前的下载;
--limit-rate=amount:以指定的速率传输文件;

注意:lftpget、wget命令只能下载文件,不能下载目录;

#直接下载
wget http://fastsoft.onlinedown.net/down/idm_ald.exe
#指定保存目录和文件名
wget http://fastsoft.onlinedown.net/down/idm_ald.exe -O /tmp/abc.exe

rz,sz命令

rz:上传
sz:下载

#查找软件包
yum list | grep rz
yum search rz
#安装
yum install -y lrzsz.x86_64
#选择文件上传
rz
#下载指定目录的文件
sz ~/love.abc

curl命令

curl是基于URL语法在命令行方式下工作的文件传输工具,它支持FTP,FTPS,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE及LDAP等协议.curl支持HTTPS认证,并且支持HTTP的POST、PUT等方法,FTP上传,kerberos认证,HTTP上传,代理服务器,cookies,用户名/密码认证,下载文件断电续传,上载文件断点续传,http代理服务器管道(proxy tunneling),甚至它还支持IPV6,socks5代理服务器,通过http代理服务器上传文件到FTP服务器等等,功能十分强大.

curl [options...] url

-A/--user-agent 设置用户代理发送给服务器
--basic 使用HTTP基本认证
--tcp-nodelay 使用TCP_NODELAY选项
-e/--referer 来源网址
--cacert CA证书(SSL)
--compressed 要求返回是压缩的格式
-H/--header 自定义首部信息传递给服务器
-I/--head 只显示响应报文首部信息
--limit-rate 设置传输速度
-u/--user <user[:password]>设置服务器的用户和密码
-0/--http1.0 使用HTTP 1.0

curl http://www.baidu.com
#设置用户代理发送给服务器,在/var/log/httpd/access.log下查看该访问的用户代理
curl -A "chrome10.11"  http://192.168.147.152
curl --user-agent "chrome10.12"  http://192.168.147.152

#设置referer来源网址
curl --user-agent "chrome10.12" -e "https://www.google.com/search?q=hello"  http://192.168.147.152

#只显示响应报文首部信息
curl -I http://192.168.147.152

elinks 文本的浏览器

elinks [option]... [url]...
-dump:不进入交互式模式,而直接将URL的内容输出至标准输出;

elinks http://www.baidu.com
elinks -dump  http://www.baidu.com

while循环:

while CONDITION;do
  循环体
  自增表达式
done

while循环计算1-100的示例:

#!/bin/bash

declare -i i=0
declare -i sum=0

while [ $i -le 100 ];do
     sum=$[$sum+$i] 
     let i++
done

echo $sum

while循环的特殊用法(遍历文件的行):

while read VARIABLE;do
循环体;
done < /PATH/FROM/SOMEFILE

依次读取/PATH/FROM/SOMEFILE文件中的每一行,且将基赋值给VARIABLE变量;

示例:找出ID号为偶数的用户,显示其用户名、ID及默认shell;

#!/bin/bash

while read line;do
   userid=$(echo $line | cut -d: -f3)
   username=$(echo $line | cut -d: -f1)
   shell=$(echo $line | cut -d: -f7)

   if [ $[ $userid % 2 ] -eq 0 ];then
      echo "$userid,$username,$shell"
   fi
done < /etc/passwd

until循环

until CONDITION;do
  循环体
  自增表达式
done

CONDITION进入条件为假,和while的CONDITION相反;

#!/bin/bash

declare -i sum=0;
declare -i i=0;

until [ $i -gt 100 ];do
    let sum+=$i
    let i++
done

echo $sum

练习:分别使用for,while,until实现
1、分别求100以内所有偶数之和,100以内所有奇数之和;

#!/bin/bash  

declare -i evenSum=0
declare -i i=0

[ $# -lt 1 ] && echo "请输入计算偶数的上线的数值!" && exit 1

while [ $i -le $1 ];do
    let i++
    if [ $[ $i % 2 ] -eq 1 ];then
       continue
    fi
    let evenSum+=$i
done

echo "evenSum:${evenSum}"
#!/bin/bash

[ $# -lt 1 ] && echo "请输入求奇数值上限值!" && exit 1

declare -i i=0
declare -i oddSum=0

while  true ;do
   let i++
   if [ $i -eq $1 ];then
      break;
   fi

   if [ $[ $i % 2 ] -eq 0 ];then
      continue;
   fi

   let oddSum+=$i
done

echo "oddSum:${oddSum}"
#!/bin/bash


[ $# -lt 1 ] && echo "请输入求奇数值上限值!" && exit 1

declare -i i=1
declare -i oddSum=0

while true;do
   let oddSum+=$i
   let i+=2
   if [ $i -gt $1 ];then
      break
    fi
done

echo "oddSum:${oddSum}"

2、创建10个用户,user101-user110;密码同用户名;
3、打印九九乘法表;

#!/bin/bash

for i in {1..9};do
    for j in $(seq 1 $i);do
        echo -e -n "${j}x${i}=$[${j}*${i}]\t"
    done
       echo
done 

4、打印逆序的九九乘法表;

5、练习:每隔3秒钟到系统上获取已经登录的用户信息;其中,如果logstash用户登录了系统,则记录于日志中,并退出;

#!/bin/bash

while true;do
   sleep 3
   who | grep "^logstash\>" &> /dev/null && echo "$(date "+%F %T") logstash logged on" >> ~/script/log && break
done
#!/bin/bash

while true;do
   sleep 3
   if who | grep "^logstash\>" &> /dev/null;then
      break
   fi
done

echo "$(date "+%F %T") logstash logged on" >> ~/script/log
#!/bin/bash

until who | grep "^logstash\>" &> /dev/null;do
      sleep 3
done

echo "$(date "+%F %T") logstash logged on" >> ~/script/log
Shell
1
https://gitee.com/wudongmeng/linux.git
git@gitee.com:wudongmeng/linux.git
wudongmeng
linux
Linux学完就忘系列
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891