Linux下兩種實用自動互動方法

2021-06-17 22:10:08 字數 2669 閱讀 7413

在網上搜尋一大堆以後我總結到了2個linux互動的方法。

第乙個方法 – 管道法

這個辦法不是所有的地方都有用,但是呢他非常的簡單方便,不需要裝第三方軟體的支援,在一些命令比如passwd上就非常有用了。

**如下:

#!/bin/bash  

(echo "curpassword"  

sleep 1  

echo "newpassword"   

sleep 1  

echo "newpassword")|passwd 

這個是sh指令碼,如果想直接在shell裡面操作就要這樣寫

後執行的命令 | 先執行的命令

比如:(echo 123;echo 123) | passwd

enter new unix password: retype new unix password: passwd: password updated successfully

這個命令就會先執行passwd然後執行前面的 echo 123將向控制台輸出123 ,  多個語句必須使用;來分開,另外必須用括號包裹起來。

這個命令執行以後將會修改當前使用者的密碼 為123

第二個方法 – 強大的expect

expect是乙個非常強大的shell工具,因為expect本來就是為實現自動互動功能而生,但是他也有個缺點,大多數的linux都沒預設安裝它,需要自行安裝一次。

ubuntu使用者用apt-get install expect 

centos使用者用yum install expect

來安裝這個工具

#!/usr/bin/expect

spawn /etc/webmin/start

expect "enter pem pass phrase:"

send "password\n"

expect eof

exit

解釋下:

第一行是可以理解成宣告,反正這個必須的!

第二行spawn代表執行檔案

第三行如果出現了enter pem pass phrase:

第四行則輸出password和乙個回車

第五行expect eof可以理解成是退出判斷,這個是必須的,跟程式設計裡面的}一樣

最後乙個是退出就不解釋了。。

expect因為過於強大,所以有點難懂,建議大家多看看其他例子(搜尋引擎關鍵字:expect 例子)和基本用法。

參考:前幾天在寫指令碼的時候我有乙個功能是想切換使用者,讓他自動輸入密碼。我覺得shell指令碼實現不了,於是就上網查詢,

發現expect指令碼可以實現,但是一直沒有試驗,今天閒來沒事就做一下測試。

1。首先確認expect的包要安置。

[[zhuying@sor_sys opt]$ rpm -qa | grep expect

安裝過後會顯示:

[[zhuying@sor_sys opt]$rpm -qa | grep expect

expect-5.43.0-5.1

expect-devel-5.42.1-1

2.檢視expect的路徑,可以用

[zhuying@sor_sys opt]$which expect

/usr/bin/expect

[zhuying@sor_sys opt]$ view autosu.sh

3。確定指令碼有可執行許可權

chmod +x autosu.sh

#!/usr/bin/expect-f//這個expect的路徑就是用which expect 檢視的結果

spawn su - oracle//切換使用者

expect "password:"//提示讓輸入密碼

send "99billzy\r"//輸入oracle的密碼

interact

//操作完成

這在root使用者切換到oracle使用者的時候特別的快,但是在其他使用者切換到oracle的時候則需要等待一段時間!

另外需要注意的是:

不能按照習慣來用sh autosu.sh來這行expect的程式,會提示找不到命令,如下:

autosu.sh: line 3: spawn: command not found

couldn't read file "password:": no such file or directory

autosu.sh: line 5: send: command not found

autosu.sh: line 6: interact: command not found

因為expect用的不是bash所以會報錯。執行的時候直接./autosu.sh就可以了。~切記!

參考:

ubuntu下安裝PyCharm的兩種方式

pycharm乙個是python整合開發環境,它既提供收費的專業版,也提供免費的社群版本。pycharm帶有一整套可以幫助使用者在使用python語言開發時提高其效率的工具,比如除錯 語法高亮 project管理 跳轉 自動完成 單元測試等等。pycharm非常好用,而且是跨平台的,在windows...

Redhat nis client兩種接入方式

redhat nis client兩種接入方式 在redhat上nis client有兩種方式接入nis伺服器 etc nsswitch.conf和system config authentication 通過 etc nsswitch.conf的方式使用者只能通過yppasswd進行修改密碼且無法...

python threading 兩種建立方式

作用 建立在thread模組之上,可以更容易地管理多個執行執行緒。通過使用執行緒,程式可以在同乙個程序空間併發地執行多個操作。threading模組建立在thread的底層特性基礎上,可以更容易地完成執行緒處理。1 呼叫函式 要使用thread,最簡單的方法就是用乙個目標函式例項化乙個thread物...