使用sed工具处理/etc/fstab配置文件

使用sed工具处理/etc/fstab配置文件


背景:某行有一百多台服务器需要重新配置文件系统,原有的文件系统的内容如下:

/dev/sdb1        /data/ssd1

/dev/sdc1        /data/ssd2

/dev/sdd1        /data/disk

/dev/sde1        /data/disk2

/dev/sdf1        /data/disk3

/dev/sdg1        /data/disk4

/dev/sdh1        /data/disk5

/dev/sdi1        /data/disk6

/dev/sdj1        /data/disk7

/dev/sdk1        /data/disk8

/dev/sdl1        /data/disk9

/dev/sdm1        /data/disk10

现要求将其改为如下内容:

/dev/sdb         /data/ssd1

/dev/sdc         /data/ssd2

/dev/sdd         /data/disk

/dev/sde         /data/disk2

/dev/sdf         /data/disk3

/dev/sdg         /data/disk4

/dev/sdh         /data/disk5

/dev/sdi         /data/disk6

/dev/sdj         /data/disk7

/dev/sdk         /data/disk8

/dev/sdl         /data/disk9

/dev/sdm         /data/disk10

由于服务器数量较多和客户要求尽快处理,鉴于此,我使用shell脚本与expect脚本结合的方法进行处理,具体步骤如下:

  1. 先建立一个ip地址文件,内容如下:

    [[email protected] xgfs]# cat ip.txt

    192.168.100.114

    192.168.100.113

    192.168.100.112

    192.168.100.111

    192.168.100.110

    。。。。。

  2. 由于是实验,我将/etc/fstab文件复制一份到/oldboy/kewai/xgfs/pfzh,下面是expect脚本,用于完成交互,内容如下:

    [[email protected] xgfs]# cat fs.exp

    #!/usr/bin/expect

    set ip [lindex $argv 0]

    set timeout 60

    set password  "root"

    spawn ssh [email protected]$ip  {sed  -i -r ‘s#/dev/sd([a-z]).*   (.*)#/dev/sd\1     \2#‘ /oldboy/kewai/xgfs/pfzh}

    expect {

    "yes/no"  {exp_send "yes\r";exp_continue}

    "*password:" {exp_send  "$password\r"}

    }

    expect eof

    exit

  3. shell脚本使用for循环,脚本内容如下:

    [[email protected] xgfs]# cat fs.sh

    #!/bin/bash

    for ip in $(cat /oldboy/kewai/xgfs/ip.txt)

    do

    expect fs.exp $ip

    cat /oldboy/kewai/xgfs/pfzh

    #mount -a

    #df -Th

    done

    说明:实际生产中要使用mount -a重新挂载下文件系统,使用df -Th查看下文件系统挂载情况!

  4. 执行sh -x fs.sh即可
时间: 2024-10-13 00:58:45

使用sed工具处理/etc/fstab配置文件的相关文章

shell脚本之正则表达式(二)---sed工具

sed工具 sed是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除.替换.添加.移动等),最后输出所有行或者仅输出处理的某些行.sed 也可以在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于 Shell 脚本中,用以完成各种自动化处理任务. sed工作流程 1.读取:sed 从输入流(文件.管道.标准输入)中读取一行内容并存储到临时的缓冲区中.2.执行:默认情况下,所有的 sed 命令都在模式空间中顺序地执行,除非指定了行的地址,否则 sed 命

正则表达式三剑客之二sed工具

三剑客之二sed工具 sed(Stream EDitor)是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除.替换.添加.移动等),最后输出所有行或者仅输出处理的某些行.sed 也可以在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于 Shell 脚本中,用以完成各种自动化处理任务. sed 的工作流程主要包括读取.执行和显示三个过程. ?读取:sed 从输入流(文件.管道.标准输入)中读取一行内容并存储到临时的缓 冲区中(又称模式空间,patter

shell编程之正则表达式(二)sed工具

sed 工具 sed(Stream EDitor)是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除.替换.添加.移动等),最后输出所有行或者仅输出处理的某些行.sed 也可以在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于 Shell 脚本中,用以完成各种自动化处理任务.sed 的工作流程主要包括读取.执行和显示三个过程. 读取:sed 从输入流(文件.管道.标准输入)中读取一行内容并存储到临时的缓 冲区中(又称模式空间,pattern spac

shell脚本--sed工具

sed sed:它叫做流式编辑器,它的工作场景一般是在编辑器中,把一段文本按行读入sed中然后按指定的方式输出,这是它最基本的用法. 一.sed的基本操作: 1./pattern/action pattern为正则表达式,对满足pattern的行作action操作 例如 这条命令和grep基本一样,其中-n的意思是只将执行后面指令的显示出来,如果不加-n选项则会把所有信息显示以便并且把匹配到的多显示一遍,p的意思是打印,如果改成d则是删除.-i的话则会修改源文件 2./pattern/s/pat

sed工具

grep工具的功能其实还不够强大,grep实现的只是查找功能,而它却不能实现把查找的内容替换掉.以前用vim的时候,可以查找也可以替换,但是只局限于在文本内部来操作,而不能输出到屏幕上.sed工具以及下面要讲的awk工具就能实现把替换的文本输出到屏幕上的功能了,而且还有其他更丰富的功能.sed和awk都是流式编辑器,是针对文档的行来操作的. 打印某行 sed -n 'n'p filename 单引号内的n是一个数字,表示第几行: [[email protected] ~]# sed -n '2'

正则表达式与grep、sed工具使用简介

正则表达式与grep.sed工具使用简介 一.正则表达式     正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑. 其介绍如下:      \ 将下一个字符标记符.或一个向后引用.或一个八进制转义符 ^ 匹配输入字符串的开始位置 $ 匹配输入字符串的结束位置 * 匹配前面的子表达式任意次 + 匹配前面的子表达式一次或多次(大于等于1次) ? 匹配前

Linux:sed工具

1.什么是sed工具 sed意为流编辑器(Stream Editor),在Shell脚本和Makefile中作为过滤器使用非常普遍,也 就是 把前一个程序的输出引入sed的输入,经过一系列编辑命令转换为另一种格式输出.sed 和vi都源于 早期UNIX的ed工具,所以很多sed命令和vi的末行命令是相同的. sed命令行的基本格式为: sed option 'script' file1 file2 ... sed option -f scriptfile file1 file2 ... sed处

根据鸟哥书籍学习 sed 工具的使用

sed工具 [[email protected] ~]#sed   [-nefr]  [动作] 参数: -n  : 使用安静模式.在一般sed用法中,所有来自STDIN的数据一般都会列出到屏幕上.但是如果加上-n参数后,则只有经过sed特殊处理的那一行(操作)才会被列出来. -e  :直接在命令行模式上进行sed的动作编辑. -f  :直接将sed的动作写在一个文件内,-f filename 则可以执行filename内的动作. -r  :  sed的动作支持的是扩展型正则表达式的语法(默认是基

centos6.x中fstab配置文件出错导致无法启动及忘记root密码解决方法

一.当你修改/etc/fstab配置文件,重启后发现无法进入命令行时,有如下解决方法: 解决办法: 1.启动linux提示失败,输入root账户密码,再次修改/etc/fstab配置文件是会提示readonly无法保存修改. 2.提权成root 3.mount  rw,renount /  或 mount / rw,remount 再次编辑/etc/fstab就可以修改了 4.修改fstab文件  vi /etc/fstab,重启生效 二.解决忘记root密码,重新配置新的密码方法. 在使用li