zoukankan      html  css  js  c++  java
  • unit6&9

    ##################第六单元文本处理工具

    一、diff 命令

    • diff 命令用于比较两个文件的内容 , 以了解其区别。它还可用于创建补丁文件。补丁文件用于在企业环境的多台计算机之间对相似文件进行更改

    选项 说明

    -C 显示上下文周围的行

    -U 使用统一输出格式(对于生成补丁文件很有用)

    -r 从指定的目录开始文件执行递归式比较

    [root@localhost mnt]# vim file

    hello

    [root@localhost mnt]# vim file.new

    hello

    123

    [root@localhost mnt]# diff -u file file.new

    --- file 2017-04-06 21:12:40.913242073 -0400

    +++ file.new 2017-04-06 21:13:05.293242073 -0400

    @@ -1,2 +1,2 @@

    -hello

    -

    +hello westos

    +123

    二、修补命令 patch

    •patch 采用补丁文件 patchfile ( 包含由 diff 生成的差异列表 ) 并将这些差异应用于生成补丁版的一个或多个原始文件。通常 , 补丁版替换原始文件 , 但当指定 -b 选项时 , 可以制作备份。将用 .orig 文件名后缀重命名原始文件

    • patch 可用于将简单的补丁文件应用于使用以下语法的单个文件

    – [root@host etc]# patch issue patchfile

    Patching file issue

    •以下命令显示如何使用通过 diff -Naur 创建的补丁文件。用户更改为与从中创建补丁文件的原始目录相似的可比较目录后 , 将执行 patch

    – [user@host orig-dir]$ patch -b < /tmp/patchfile

    Patching file hosts

    Patching file network

    eg:

    [root@localhost mnt]# yum install patch -y

    [root@localhost mnt]# patch  file file.path

    patching file file

    [root@localhost mnt]# cat file

    hello westos

    123

    三、grep 命令

    • grep 将显示文件中与模式匹配的行。其也可以处理标准输入

    • 模式可以包含正则表达式元字符 , 因此始终为正则表达式加引号通常被视为一种好办法。在本单元后面的部分中将介绍基本正则表达式

    选项 说明

    -i 执行不区分大小写搜索

    -n                前置返回行的行号

    -r 对文件执行递归式搜索,从命名目录开始

    -C 显示具有匹配模式的行的计数

    -V 返回不包含模式的行

    eg:

    [root@localhost mnt]# grep -in root passwd ##在passwd文件中执行不区分大小写的搜索,显示root,并显示行号

    1:root:x:0:0:root:/root:/bin/bash

    10:operator:x:11:0:operator:/root:/sbin/nologin

    [root@localhost mnt]# grep hostname -r /etc/ -n ##在/etc/目录中从命名目录开始执行第归是搜索,过滤出含有hostname的文件,并显示行号

    [root@localhost mnt]# grep root passwd  |grep -v -E "^bash|test$"

    ##在passwd文件中过滤出不是以bash开头,并且不是以test结尾的含有root的行

    四、Cut 命令

    • cut 用于 “ 剪切 ” 文件中的文本字段或列并将其显示到标准输出

    选项 说明

    -d 指定用于提取字段的分隔符(Tab是默认值)

    -f 指定要从每行中提取的字段

    -C 指定要从每行中提取的文本列

    eg:

    [root@localhost mnt]# vim check_ip.sh

    #!/bin/bash

    ifconfig $1 |grep inet |grep inet6 -v |awk -F " " '{print $2}'

    [root@localhost mnt]# chmod +x check_ip.sh

    [root@localhost mnt]# /mnt/check_ip.sh eth0

    172.25.254.141

    五、sort 命令

    • sort 用于排序文本数据。该数据可以位于文件中或其他命令输出中。 Sort 通常与管道一起使用

    选项 说明

    -n 按数值而非字符排序

    -k   设置排序字段

    -t 指定其他字段分隔符(默认为空格)

    [root@localhost mnt]# sort -rnu wesy  ##按数值倒序排序,并显示唯一的数字

    444

    99

    77

    56

    34

    15

    14

    8

    7

    5

    4

    3

    [root@localhost mnt]# sort -rn wesy |uniq -c

          1 444

          1 99

          1 77

          2 56

          2 34

          1 15

          1 14

          2 8

          2 7

          1 5

          1 4

          2 3

          2 1

          1

    六、uniq 命令

    •uniq“ 删除 ” 文件中重复的相邻行。若要只打印文件中出现的唯一行(“ 删除 ” 所有重复行 ), 必须首先对 uniq 的输入进行排序。由于可以为uniq 指定其决策所基于的字段或列 , 因此这些字段或列是对其输入进行排序所必须的字段或列。如果未与选项一起使用 , uniq 会使用整个记录作为决策键 , 删除其输入中的重复行

    选项 说明

    -u 仅显示唯一行

    -d 显示重复行

    -c 每行显示一次(包括出现计数)

    七、tr 命令

    • tr 用于转字符 : 即 , 如果给定了两个字符范围 , 则只要发现某个字符位于第一个范围中 , 就会将其转换为第二个范围中对等的字符。该命令通常在 shell 脚本中使用 , 以按预期情况转换数据

    • tr 'A-Z' 'a-z' <file

    八、sed 命令

    • sed 命令是流编辑器 , 用于对文本数据流执行编辑。假定要处理一个文件名 , sed 将对文件中的所有行执行搜索和替换 , 以将修改后的数据发送到标准输出 ; 即 , 其实际上并不修改现有文件。与 grep一样 , sed 通常在管道中使用

    • 由于 sed 命令通常包含可以解释为 shell 元字符的字符 ,因此请按下面示例所示引用 sed 命令。默认情况下 , sed对文件中的所有行执行操作。在提供 sed 时 , 可带有地址( 将命令限制用于仅那些行 )

    命令 说明

    s/old/new/ 执行字符串转换,将old替换为new

    d   删除匹配的行

    eg:

    [root@localhost mnt]# vim user_create.sh

    #!/bin/bash

    MAX=`wc -l $1|cut -d " " -f 1`

    for NUM in $(seq 1 $MAX)

    do

            USERNAME=`sed -n ${NUM}p $1`

            PASSWORD=`sed -n ${NUM}p $2`

            useradd $USERNAME

            echo $PASSWORD |passwd --stdin $USERNAME

    done

    [root@localhost mnt]# vim userfile

    user1

    user2

    user3

    [root@localhost mnt]# vim passfile

    pass1

    pass2

    pass3

    [root@localhost mnt]# sh user_create.sh userfile passfile

    ################第九单元部署 ftp 文件共享服务

    一、部署 FTP 服务器

    [root@localhost yum.repos.d]# vim rhel_dvd.repo  ##配置yum源

    [root@localhost yum.repos.d]# cat rhel_dvd.repo

    # Created by cloud-init on Thu, 10 Jul 2014 22:19:11 +0000

    [rhel_dvd]

    gpgcheck = 0

    enabled = 1

    baseurl = http://172.25.254.250/rhel7  

    name = Remote classroom copy of dvd

    • FTP ( 文件传输协议 ) 是 INTERNET 上仍常用的最老的网络协议之一 , 它为系统提供了通过网络与远程服务器进行传输的简单方法

    • 在 RED HAT ENTREPRISE LINUX 6 中。 FTP 服务器包的名称为 VSFTPD , 它代表 Very Secure File Transfer Protocol Damon 服务器名称也叫做 vsftpd

    • 默认配置文件让 ANONYMOUS 用户只能下载位于CHROOT 目录中的内容。 /var/ftp/ 这意味着远程 FTP客户端能以用户 anonymous 或 ftp 身份连接到服务器( 无需密码 ), 并从 ftp 服务器上的 /var/ftp/ 目录下载文件( 其本地 ftp 用户可以读取这些文件 )

    二、部署网络服务的四个步骤

    •安装服务软件

    •启动服务

    •启用服务

    •测试服务

    三、安装 vsftpd 包并启动服务

    [root@localhost yum.repos.d]# yum clean all

    • yum install vsftpd -y

    • systemctl start vsftpd

    • systemctl stop firewalld

    • systemctl enable vsftpd

    [kiosk@foundation41 Desktop]$ lftp 172.25.254.241  ####能登陆并且显示,表示安装成功

    lftp 172.25.254.241:~> ls                

    drwxr-xr-x    2 0        0               6 Mar 07  2014 pub

    .vsftpd文件信息

    /var/ftp      ##默认发布目录

    /etc/vsftpd  ##配置目录

    四、启用 vsftpd 服务

    [root@localhost yum.repos.d]# firewall-config

    public-->选中ftp,dhcpv6—client-->在options处选择Relode Firewalld

    • Applications-->Sundry-->Firewall

    [root@localhost yum.repos.d]# firewall-cmd --list-all

    public (default, active)

      interfaces: eth0

      sources:

      services: dhcpv6-client ftp ssh

      ports:

      masquerade: no

      forward-ports:

      icmp-blocks:

      rich rules:

    五、测试服务

    • cd /var/ftp/pub/

    • touch file{1..3}

    • lftp 172.25.0.10

    lftp 172.25.0.10:~> ls

    drwxr-xr-x 2 0 0

    lftp 172.25.0.10:/> cd pub/

    lftp 172.25.0.10:/pub> ls

    -rw-r--r-- 1 0 0

    -rw-r--r-- 1 0 0

    -rw-r--r-- 1 0 0

    42 Nov 20 07:19 pub

    0 Nov 20 07:19 file1

    0 Nov 20 07:19 file2

    0 Nov 20 07:19 file3

    六、FTP 服务器配置

    • 默认配置为匿名 FTP 服务器 , 仅允许匿名客户端 下载 , 并且禁用所有本地用户 , 禁止上传

    • vsftpd 配置件 : /etc/vsftpd/vsftpd.conf ,document root 位于 /var/ftp/ 中 , 配置修改后 , 需重新启动服务

    eg:

    [root@localhost ~]# vim /etc/vsftpd/vsftpd.conf

    [root@localhost ~]# systemctl restart vsftpd.service

    [root@localhost ~]# setenforce 0

    • 选项示例 :

    – anonymous_enable=YES

    – local_enable=NO

    – write_enable=NO

    七、Vsftpd 服务配置

    1)匿名用户设定

    anonymous_enable=YES|NO ##匿名用户登陆限制

    #<匿名用户上传>

    vim /etc/vsftpd/vsftpd.conf

    write_enable=YES

    anon_upload_enable=YES

    chgrp ftp /var/ftp/pub

    chmod 775 /var/ftp/pub

    eg:

    eg:

    [kiosk@foundation41 Desktop]$ lftp 172.25.254.241

    lftp 172.25.254.241:~> cd pub/

    cd 成功, 当前目录=/pub

    lftp 172.25.254.241:/pub> ls

    lftp 172.25.254.241:/pub> put /etc/passwd

    put: Access failed: 550 Permission denied. (passwd) ##550系统不允许这样做  设置write_enable=YES

    lftp 172.25.254.241:/pub> put /etc/passwd

    put: Access failed: 553 Could not create file. (passwd) ##553没有权限

    lftp 172.25.254.241:/pub> put /etc/passwd

    2358 bytes transferred  ##上传成功

    [root@localhost ~]# ll -ld /var/ftp/pub/   

    drwxr-xr-x. 2 root root 6 Mar  7  2014 /var/ftp/pub/

    [root@localhost ~]# chgrp ftp /var/ftp/pub/  ##把/var/ftp/pub/给ftp组

    [root@localhost ~]# chmod 775 /var/ftp/pub/  ##改变/var/ftp/pub/的权限为775

    #<匿名用户家目录修改>

    anon_root=/direcotry

    #<匿名用户上传文件默认权限修改>

    anon_umask=xxx

    #<匿名用户建立目录>

    anon_mkdir_write_enable=YES|NO

    #<匿名用户下载>

    anon_world_readable_only=YES|NO ##设定参数值为no表示匿名用户可以下载

    #<匿名用户删除>

    anon_other_write_enable=YES|NO

    #<匿名用户使用的用户身份修改>

    chown_uploads=YES

    chown_username=student

    #<最大上传速率>

    anon_max_rate=102400

    #<最大链接数>

    max_clients=2

    2)本地用户设定

    local_enable=YES|NO ##本地用户登陆限制

    eg:

    [kiosk@foundation41 Desktop]$ lftp 172.25.254.241 -u student

    口令:

    lftp student@172.25.254.241:~> cd /etc   

    cd: 登录失败: 530 This FTP server is anonymous only.  ##参数为local_enable=NO不允许本地用户登陆

    lftp student@172.25.254.241:~> lftp 172.25.254.241

    lftp 172.25.254.241:~> ls

    t`ls' at 0 [重新连接前延时: 24]   

    中断                                     

    lftp 172.25.254.241:~> quit

    [kiosk@foundation41 Desktop]$ lftp 172.25.254.241 -u student

    口令:

    lftp student@172.25.254.241:~> ls  ##530登陆密码不正确

    ls: 登录失败: 530 Login incorrect.              

    lftp student@172.25.254.241:~> quit

    write_enable=YES|NO ##本地用户写权限限制

    eg:

    [kiosk@foundation41 Desktop]$ lftp 172.25.254.241 -u student

    口令:

    lftp student@172.25.254.241:~> put /etc/passwd

    put: Access failed: 553 Could not create file. (passwd) ##setenforce 0 解决

    lftp student@172.25.254.241:~> put /etc/passwd

    2358 bytes transferred                                

    lftp student@172.25.254.241:~> put /etc/passwd

    put: Access failed: 550 Permission denied. (passwd)  ##550文件系统不允许这样做

    #<本地用户家目录修改>

    local_root=/directory

    #<本地用户上传文件权限>

    local_umask=xxx

    #<限制本地用户浏览/目录>

    所有用户被锁定到自己的家目录中

    chroot_local_user=YES

    chmod u-w /home/*

    用户黑名单建立

    chroot_local_user=NO

    chroot_list_enable=YES

    chroot_list_file=/etc/vsftpd/chroot_list

    用户白名单建立

    chroot_local_user=YES

    chroot_list_enable=YES

    chroot_list_file=/etc/vsftpd/chroot_list

    #<限制本地用户登陆>

    vim /etc/vsftpd/ftpusers ##用户黑名单

    vim /etc/vsftpd/user_list ##用户临时黑名单

    用户白名单设定

    userlist_deny=NO

    /etc/vsftpd/user_list ##参数设定,此文件变成用户白名单,只在名单中出现的用户可以登陆ftp

    eg:

    [kiosk@foundation41 Desktop]$ lftp 172.25.254.241

    lftp 172.25.254.241:~> ls                

    drwxr-xr-x    2 0        0               6 Mar 07  2014 pub

    lftp 172.25.254.241:/> cd pub/

    lftp 172.25.254.241:/pub> ls

    lftp 172.25.254.241:/pub> quit

    [kiosk@foundation41 Desktop]$ lftp 172.25.254.241 -u student

    口令:

    lftp student@172.25.254.241:~> ls        

    lftp student@172.25.254.241:~> ls  

    lftp student@172.25.254.241:~> cd mnt/

    cd: Access failed: 550 Failed to change directory. (/home/student/mnt)

    lftp student@172.25.254.241:~> cd /home/student/

    lftp student@172.25.254.241:~> ls

    lftp student@172.25.254.241:~> cd /home/student/mnt

    cd: Access failed: 550 Failed to change directory. (/home/student/mnt)

    lftp student@172.25.254.241:~> cd /etc

    lftp student@172.25.254.241:/etc> quit

    12 anonymous_enable=YES   ##允许匿名用户登陆

     13 #

     14 # Uncomment this to allow local users to log in.

     15 # When SELinux is enforcing check for SE bool ftp_home_dir

     16 local_enable=YES  ##允许本地用户登陆

     17 #

     18 # Uncomment this to enable any form of FTP write command.

     19 write_enable=YES  

     20 #

     21 # Default umask for local users is 077. You may wish to change this to 022,

     22 # if your users expect that (022 is used by most other ftpd's)

     23 local_umask=022

     24 #

     25 # Uncomment this to allow the anonymous FTP user to upload files. This only

     26 # has an effect if the above global write enable is activated. Also, you wil    l

     27 # obviously need to create a directory writable by the FTP user.

     28 # When SELinux is enforcing check for SE bool allow_ftpd_anon_write, allow_f    tpd_full_access

     29 anon_upload_enable=YES  ##允许上传

    500权限过大

  • 相关阅读:
    函数/方法的活动对象
    Function 详解(一)
    两栏自适应布局延展到多栏自适应布局
    height百分比以及高度自适应问题
    clearfix为什么用display:table,而不用display:block
    Nodejs写的搬家工具知识分享
    终于把自己多年前的百度文章搬到博客园了
    用Razor来生成模板 using razor for template
    一个request,但是controller被执行了多次的问题
    33个好用的图片轮显 jquery图片轮显
  • 原文地址:https://www.cnblogs.com/yangying2017/p/6685696.html
Copyright © 2011-2022 走看看