05-Shell编程之免交互

目录

5.1 Here Document免交互

5.1.1 通过passwd命令给用户设置密码:

5.2. Expect免交互

5.2.1使用Expect自动登录FTP服务器

5.2.2 使用Expect实现免交互磁盘创建

5.1 Here Document免交互

Here Document是Shell编程中实现免交互的一种常用方法。它使用I/O重定向的方式,将一段文本(可以包含变量、命令等)作为输入传递给命令或程序。Here Document的基本语法格式如下:

命令 <<标记  
输入内容...  
标记

其中,表示输入的开始,而相同的标记(单独成行)则表示输入的结束。在命令和之间不能有任何字符(包括空格)。

5.1.1 通过passwd命令给用户设置密码:

为了避免在设置用户密码时的交互,可以使用Here Document将密码作为输入传递给passwd命令。

echo "新密码" | passwd --stdin 用户名  
# 或者使用Here Document  
passwd 用户名 <<EOF  
新密码  
新密码(确认)  
EOF

5.2. Expect免交互

Expect是一个用于自动化交互式应用程序(如telnet、ftp、passwd等)的工具。它允许脚本根据程序的输出发送相应的输入,从而模拟用户与程序的交互过程。

基本命令:

  • spawn:启动一个进程(通常是交互式程序)。
  • expect:等待特定的输出(字符串或模式)。
  • send:发送字符串到进程。
  • interact:允许用户与进程进行交互。

5.2.1使用Expect自动登录FTP服务器

#!/usr/bin/expect -f  
spawn ftp ftp.example.com  
expect "Name \(ftp.example.com:(none)):"  
send "用户名\r"  
expect "Password:"  
send "密码\r"  
# 后续可以进行FTP操作,如cd、get、put等  
interact

5.2.2 使用Expect实现免交互磁盘创建

步骤:

  1. 安装Expect:首先,确保你的系统上已经安装了Expect工具。在大多数Linux发行版中,你可以使用包管理器(如apt、yum或dnf)来安装。
  2. 编写Expect脚本:使用Expect脚本语言编写一个自动执行磁盘分区和格式化过程的脚本。

 

#!/usr/bin/expect -f  
  
# 磁盘设备名作为参数传入  
set disk [lindex $argv 0]  
  
spawn fdisk $disk  
  
expect "命令(输入 m 获取帮助):"  
send "n\r"  # 创建新分区  
expect "Select (default p):"  
send "p\r"  # 选择主分区  
expect "(1-4, default 1):"  
send "\r"   # 默认第一个分区  
expect "起始扇区"  
send "\r"   # 使用默认起始扇区  
expect "Last"  
send "+10G\r"  # 设置分区大小为10G  
expect "已设置为 Linux 类型"  
send "w\r"  # 写入分区表并退出  
expect eof  
  
# 格式化分区(这里假设我们只对第一个分区进行格式化)  
spawn mkfs.xfs $disk1  
expect eof  
  
# 其他可能需要的步骤,如创建挂载点、挂载分区等

 

 

 

 

  • 16
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值