自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

教會(huì)你Linux Shell自動(dòng)交互的三種方法

系統(tǒng) Linux
你了解Linux系統(tǒng)么?你是Linux系統(tǒng)的應(yīng)用者么?如果你要學(xué)習(xí)linux,你可能會(huì)遇到Linux Shell自動(dòng)交互問(wèn)題,這里將介紹Linux Shell自動(dòng)交互的解決方法,在這里拿出來(lái)和大家分享一下。

你了解Linux系統(tǒng)么?你是Linux系統(tǒng)的應(yīng)用者么?如果你要學(xué)習(xí)linux,你可能會(huì)遇到Linux Shell自動(dòng)交互問(wèn)題,這里將介紹Linux Shell自動(dòng)交互的解決方法,在這里拿出來(lái)和大家分享一下。

一、背景

shell腳本在處理自動(dòng)循環(huán)或大的任務(wù)方面可節(jié)省大量的時(shí)間,通過(guò)創(chuàng)建一個(gè)處理任務(wù)的命令清單,使用變量、條件、算術(shù)和循環(huán)等方法快速創(chuàng)建腳本以完成相應(yīng)工作,這比在命令行下一個(gè)個(gè)敲入命令要省時(shí)省力得多。

但是有時(shí)候我們可能會(huì)需要實(shí)現(xiàn)和交互程序如ftp,telnet服務(wù)器等進(jìn)行交互的功能,這時(shí)候我們需要用到shell的自動(dòng)交互功能,本文收集了較常用的三種自動(dòng)交互方法,并進(jìn)行了比較和總結(jié)。

二、需求

需求1:
從一臺(tái)Linux機(jī)器ftp登陸到另一臺(tái)Linux機(jī)器,進(jìn)行系列操作后關(guān)閉,懶得每次都手動(dòng)輸入密碼。

需求2:
改變登錄用戶密碼,懶得每次都輸入新舊密碼。

需求3:
希望su自動(dòng)登錄到root賬戶,懶得每次都輸入root密碼。

三、調(diào)試環(huán)境

終端:SecureCRT

系統(tǒng):WinXP, CentOS 4.4(VmWare)

Shell:bash

注:shell有很多種,B類SHELL(sh, bash, ksh)之間行為相近;C類SHELL(csh, tcsh)之間行為相近,還有zsh和rc等shell,本文的調(diào)試環(huán)境是bash。

四、自動(dòng)交互方法一

自動(dòng)交互最關(guān)鍵的就是交互信息的自動(dòng)輸入,首先聯(lián)想到文件重定向,在shell編程中有這樣一種用法(參考Linux與UNIX SHELL編程指南 chapt 5.7):"command << delimiter  從標(biāo)準(zhǔn)輸入中讀入,直至遇到delimiter分界符。"

重定向操作符command << delimiter是一種非常有用的命令,shell將分界符delimiter之后直至下一個(gè)同樣的分界符之前的所有內(nèi)容都作為輸入,遇到下一個(gè)分界符, shell就知道輸入結(jié)束了。最常見(jiàn)的delimiter分界符是EOF,當(dāng)然完全可以自定為其他字符。

對(duì)于需求1 要求的自動(dòng)登陸ftp,并作系列操作,則可以用這種方法進(jìn)行自動(dòng)交互。代碼如下:

  1. #!/bin/bash  
  2. ftp -i -n 192.168.167.187 << EOF 
  3. user hzc 123456  
  4. pwd  
  5. cd test  
  6. pwd  
  7. close  
  8. bye  
  9. EOF 

測(cè)試可以發(fā)現(xiàn),如上代碼使用帳號(hào)名hzc,密碼123456成功登陸了ftp服務(wù)器,并進(jìn)入目錄,打印出了pwd。

五、自動(dòng)交互方法二

需求2中要求采用非交互的方式改變登錄用戶密碼,嘗試用方法1,無(wú)法實(shí)現(xiàn)。

這時(shí)候聯(lián)想到交互信息的另一個(gè)自動(dòng)輸入方法,管道,通過(guò)echo + sleep + | 可以實(shí)現(xiàn)這個(gè)需求。

  1. #!/bin/bash  
  2. (echo "curpassword"  
  3. sleep 1  
  4. echo "newpassword"   
  5. sleep 1  
  6. echo "newpassword")|passwd 

測(cè)試通過(guò),運(yùn)行這個(gè)腳本,直接把當(dāng)前用戶的curpassword改成newpassword。

六、自動(dòng)交互方法三

需求3中要求自動(dòng)登錄root賬號(hào),嘗試方法1和方法2,都出現(xiàn)錯(cuò)誤提示standard in must be a tty。

這時(shí)候嘗試尋找外部幫助,一個(gè)shell工具expect可以實(shí)現(xiàn)這個(gè)功能,其實(shí)expect就是一個(gè)專門用來(lái)實(shí)現(xiàn)自動(dòng)交互功能的工具,expect的語(yǔ)法可以參考相關(guān)資料,代碼如下:

  1. #!/usr/bin/expect  
  2. spawn su root  
  3. expect "password: "  
  4. send "123456\r"  
  5. expect eof  
  6. exit 

測(cè)試通過(guò),運(yùn)行這個(gè)腳本,直接從當(dāng)前用戶登錄到root用戶。

七、方法總結(jié)

方法一(重定向)簡(jiǎn)單直觀,也經(jīng)常有實(shí)際應(yīng)用,但是在自動(dòng)交互領(lǐng)域功能有限。

方法二(管道)也很簡(jiǎn)單直觀,有時(shí)甚至不用sleep配合就能展現(xiàn)強(qiáng)大的自動(dòng)交互實(shí)力,但是在某些時(shí)候也束手無(wú)策。

方法三(expect)在功能上是最為強(qiáng)大的,expect本來(lái)就是為實(shí)現(xiàn)自動(dòng)交互功能而生,但是缺點(diǎn)是需要安裝expect包,在嵌入式等環(huán)境下難以安裝。

三個(gè)方法各有優(yōu)劣,應(yīng)用的好,都可以完成Linux Shell自動(dòng)交互。

【編輯推薦】

  1. 為你敞開(kāi)Linux系統(tǒng)的大門
  2. Linux防火墻偽裝抗黑客惡意攻擊
  3. 20年風(fēng)雨歷程:Linux嵌入式
  4. 10個(gè)最好的自由Linux平臺(tái)ERP軟件
  5. Linux、Mac版Chrome 4.0 Beta首登場(chǎng)
責(zé)任編輯:小霞 來(lái)源: 計(jì)世網(wǎng)
相關(guān)推薦

2009-07-08 12:56:32

編寫(xiě)Servlet

2022-08-19 11:17:09

Linux

2011-06-10 10:43:12

Ubuntu應(yīng)用安裝

2009-06-23 10:45:18

Hibernate支持

2009-12-11 18:49:39

預(yù)算編制博科資訊

2022-07-13 16:06:16

Python參數(shù)代碼

2011-04-18 15:32:45

游戲測(cè)試測(cè)試方法軟件測(cè)試

2010-09-14 15:10:49

CSS注釋

2023-08-14 17:58:13

RequestHTTP請(qǐng)求

2024-11-15 07:00:00

Python發(fā)送郵件

2015-12-11 09:24:38

加密數(shù)據(jù)Linux

2011-08-01 17:41:09

Oraclesqlplus

2020-06-17 10:52:00

DDoS攻擊網(wǎng)絡(luò)攻擊網(wǎng)絡(luò)安全

2016-10-12 13:53:38

JavaByteBufferRandomAcces

2010-09-08 13:29:48

CSS

2023-02-21 14:58:12

間序列周期數(shù)據(jù)集

2010-11-16 16:11:28

Oracle身份驗(yàn)證

2021-07-13 12:31:27

IT組織改進(jìn)首席技術(shù)官

2021-12-20 07:11:26

Java List排序 Java 基礎(chǔ)

2023-09-25 15:08:43

Python方離群值
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)