文档章节

shell 自动交互式处理命令的两种方法实践

月黑风高杀人夜
 月黑风高杀人夜
发布于 2015/08/14 11:34
字数 603
阅读 145
收藏 2

1:use echo -e

example:

echo -e "n\np\n1\n\n+100M\nn\np\n2\n\n+1024M\nw\n"|fdisk /dev/vdb

\n代表回车

[root@server7 ~]# fdisk -l /dev/vdb

Disk /dev/vdb: 8589 MB, 8589934592 bytes
16 heads, 63 sectors/track, 16644 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

echo -e "n\np\n1\n\n+100M\nn\np\n2\n\n+1024M\nw\n"|fdisk /dev/vdb &> /dev/null

[root@server7 ~]# fdisk -l /dev/vdb

Disk /dev/vdb: 8589 MB, 8589934592 bytes
16 heads, 63 sectors/track, 16644 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x99657b78

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1               1         204      102784+  83  Linux
/dev/vdb2             205        2286     1049328   83  Linux
[root@server7 ~]#

ok   




2.expect:   

  notice:  you should  use “yum install expect” at begining。


  1 #!/usr/bin/expect                                                                                                                                                        
  2 spawn fdisk  /dev/vdb
  3 expect Command
  4 send "n\r"
  5 send "p\r"
  6 send "1\r"
  7 send "\r"
  8 send "+100M\r"
  9 expect "Command"
 10 
 11 
 12 send "n\r"
 13 send "p\r"
 14 send "2\r"
 15 send "\r"
 16 send "+1G\r"
 17 send "w\r"
 18 expect eof

两者异曲同工!~~~~~~~~~~~~

选择自己喜欢的把 对了,在bash里面调用expect的话格式如下

/usr/bin/expect <<-EOF
具体内容~~~~~
EOF

是不是很方便呢 ~~                        

这样我们再来一个例子:使用lftp下载一个文档:

[root@server7 ~]# lftp 172.25.254.250
lftp 172.25.254.250:~> cd pub/linux/pub/docs/lftp 
172.25.254.250:/pub/linux/pub/docs> ls vi.png
lftp 172.25.254.250:/pub/linux/pub/docs> ls vi.png-rwxrwxrwx    1 0        0          310741 Dec 25  2013 vi.png
lftp 172.25.254.250:/pub/linux/pub/docs> get vi.png

ok,这是我们常规的操作,此时我们首先使用方法一也就 echo -e

example:

[root@server7 ~]# rm vi.png 
rm: remove regular file `vi.png'? yes

先删掉

[root@server7 ~]# echo -e "cd pub/linux/pub/docs/\nls vi.png\nget vi.png\n"|lftp 172.25.254.250 
-rwxrwxrwx    1 0        0          310741 Dec 25  2013 vi.png
[root@server7 ~]# ls vi.png 
vi.png

ok 就这么easy

下来我们bash里调用expect 再来解决

 

1 #########################################################################   
  2 # File Name: get.sh
  3 # Author: dty
  4 # mail: 576786031@qq.com
  5 # Created Time: Fri 14 Aug 2015 03:15:55 PM CST
  6 #########################################################################
  7 #!/bin/bash
  8 /usr/bin/expect <<-EOF
  9 spawn lftp 172.25.254.250
 10 expect lftp
 11 send "cd pub/linux/pub/docs\r"
 12 sleep 1
 13 send "ls vi.png\r"
 14 send "get vi.png\r"
 15 send "quit\r"
 16 expect eof
 17 EOF

~             

[root@server7 ~]# ./get.sh 
spawn lftp 172.25.254.250
lftp 172.25.254.250:~> cd pub/linux/pub/docs
cd ok, cwd=/pub/linux/pub/docs
lftp 172.25.254.250:/pub/linux/pub/docs> ls vi.png
-rwxrwxrwx    1 0        0          310741 Dec 25  2013 vi.png
lftp 172.25.254.250:/pub/linux/pub/docs> get vi.png
310741 bytes transferred
lftp 172.25.254.250:/pub/linux/pub/docs> quit
[root@server7 ~]#

okok顺利完成




                                                                                                                                   很简单吧 get起来  感谢开源                        -单纯酱






© 著作权归作者所有

上一篇: 转:进程与线程
下一篇: shell 常用信号
月黑风高杀人夜
粉丝 11
博文 112
码字总数 90868
作品 0
深圳
私信 提问
使用 Impala Shell(翻译)

使用 Impala Shell 你可以使用 Impala shell 工具 (impala-shell) 配置数据库和表、插入数据和执行查询。你可以在交互式会话里提交 SQL 语句进行即席查询和探测(For ad hoc queries and exp...

weiqingbin
2014/01/07
0
0
Python Shell下使用matplotlib

Python Shell下使用matplotlib Created Monday 10 December 2012 matplotlib默认是延迟绘图直到脚本结束,因为绘图是一个高代价的操作。所以可能不想每次每个属性的改变就更新绘图,只有所有...

LianyouCQ
2012/12/10
0
0
Linux环境变量是什么

什么是环境变量 学习或使用Linux的时候,修改环境变量是经常遇到的,到底什么是环境变量?环境变量是bash shell的特性,用来存储有关shell会话和工作环境的信息。允许在内存中存储数据,以便...

844365389
2016/11/14
0
0
燕姐的 Linux 私房菜之(1)—— Linux简介

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/gongxifacai_believe/article/details/85562568 1、操作系统与硬件 无论是 Linux、OS X、Windows 操作系统,他们都是...

魏晓蕾
01/01
0
0
Linux自学(二)

shell概念(来源百度百科) 在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于DOS下的command和后来的cmd.exe。它接收用户命令,然后...

散步留馨
2016/03/05
44
0

没有更多内容

加载失败,请刷新页面

加载更多

react-nativeAndroid打包报错:Daemon: AAPT2 aapt2-3.2.1-4818971-osx Daemon #0

笔者在工作开发任务中,最近在进行Android打release包测试时,遇到了如下报错,鼓捣了好久(甚是郁闷),终于解决了。 ReactNative版本环境如下 问题描述 直接使用react-native run-android运行...

凌宇之蓝
26分钟前
1
0
每天挂机10小时最低赚17美元|能挂机赚钱

2017 年 01 月 05 日 每天挂机10小时最低赚17美元|能挂机赚钱 每 天 挂 机 10 小 时 最 低 赚 17 美 元 ( 骗 你 我 不 是 人 ) , 就 像 挂 Q Q一样,一天挂十小时 , 最低每天赚 17 美金! 教 ...

linjin200
41分钟前
1
0
Class 文件结构

https://www.cnblogs.com/honghuzidelaoren/p/3622021.html

Java搬砖工程师
57分钟前
3
0
未分类资料

$ Inside the Linux Kernel 与知乎出产 一张漫画看懂Linux系统结构

十万猛虎下画山
58分钟前
1
0
Android人脸识别Demo竖屏YUV方向调整和图片保存

本博客包含三个常用方法,用于盛开Android版人脸识别Demo中竖屏使用时送入yuv数据,但一直无法识别的情况。 1.首先可以尝试顺时针旋转90°或270°,然后送入识别SDK。 2.旋转方向后依然无法识...

是哇兴哥棒棒哒
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部