1. 程式人生 > >expect -------把互動式命令變為非互動式命令使用

expect -------把互動式命令變為非互動式命令使用

一、expect

當你不能把互動式的命令變成非互動式的命令時使用

spawn生成           expect捕獲             send傳送

1.方法:

設定ssh下次登陸不再需要密碼
ssh-keygen --------設定公鑰
ssh-copy-id -i [email protected] ---------把公鑰傳給10.18.41.62
ssh-add ---------掛鑰匙環
cd /root/.ssh-------檢視公鑰私鑰
rm -rf  /root/.ssh/* -----刪除公鑰檔案

w命令-->用來檢視登入者的資訊及他們的行為

安裝掃描

nmap -v -sP 10.18.41.0/24 -------掃描該網段的IP

2.例題:檢測系統是否已經安裝expext

#!/bin/bash
ip="172.16.70.251"
if [ -f /usr/bin/expect ];then
:
else
yum -y    install  expect
fi

if grep 251 /etc/hosts
then
:
else
echo "$ip test.up.com">> /etc/hosts
fi

3.設定給其他使用者非互動式傳送公鑰

例1:生成並拷貝ssh_key到遠端機器,再次登陸時免密碼

vim  expect.sh

/usr/bin/expect <<EOF   -------spawn生成expect捕獲send傳送
set timeout 300       設定超時時間--(如果沒有設定timeout,或者timeout不夠長,那麼就不能保證spawn的效果,由於網路原因,有可能超時,先send密碼了,之後才返回要expect密碼。)
spawn ssh-keygen
expect "Enter file in which to save the key (/root/.ssh/id_rsa):"
send "\n"
expect "Enter passphrase (empty for no passphrase):"
send "\n"
expect "Enter same passphrase again:"
send "\n"

spawn ssh-copy-id 172.16.70.251
expect {
"yes/no" { send "yes\n

"; exp_continue }
"[email protected]'s password:" { send "mima\n"}
}

expect  eof   ----不同與#!/usr/bin/expect  ,所以注意一定新增
EOF

ssh-add

2.傳輸公鑰之後可以操作:

ssh  ip   "命令"

例子:ssh  10.18.41.62  "rm  -rf   /tmp/*"

3.遠端拷貝:(誰是遠端誰加IP)

scp   10.18.41.62:/a.txt     /tmp

4.例子:編寫指令碼實現(expect自動安裝)

#!/bin/bash
#expect例項
#author:bijz
read -p "Your Name: " name

ip="172.16.70.251"
if [ -f /usr/bin/expect ];then
:
else
yum install expect -y
fi



5.批量修改使用者密碼

for i in `cat 1.txt`
do
/usr/bin/expect <<EOF
spawn passwd $i

expect "password:"
send "$i\n"

expect "password:"
send "$i\n"

expect eof
EOF
done



相關推薦

expect -------互動式命令變為互動式命令使用

一、expect當你不能把互動式的命令變成非互動式的命令時使用spawn生成           expect捕獲             send傳送1.方法:設定ssh下次登陸不再需要密碼ssh-k

expect 指令碼中可實現互動式操作

如何用expect自動幫你發郵件(自動互動) [[email protected] ~]# mail -s ddd root vim sss.sh #! /bin/bash expect <<EOF    (開頭) spawn ssh 192.168.

【轉】mysql互動式連線&互動式連線

互動式操作:通俗的說,就是你在你的本機上開啟mysql的客戶端,就是那個黑視窗,在黑視窗下進行各種sql操作,當然走的肯定是tcp協議。 非互動式操作:就是你在你的專案中進行程式呼叫。比如一邊是tomcat web伺服器,一邊是資料庫伺服器,兩者怎麼通訊?在java web裡,我們通常會選擇hibernat

互動式SHELL和互動式SHELL、登入SHELL和登入SHELL的區別

互動式shell和非互動式shell、登入shell和非登入shell的區別。 首先,這是兩個不同的維度來劃分的,一個是是否互動式,另一個是是否登入。 互動式shell和非互動式shell(interactive shell and non-interactive s

深入淺出理解互動式shell和互動式shell、登入shell和登入shell的區別

首先我們需要把bash理解為一種模式,我們不如把這種模式想象成類似於洋蔥一樣的結構,我們可以一層一層剝開,也就是說我們可以一層一層的進入子shell。就好比我們進入一棟樓,開啟一個房間是一個環境,在當前這個房間我們又看到了一個門,當我們開啟這個門的時候,我們就已經進入了新的

雜貨:互動式shell和互動式shell、登入shell和登入shell的區別

[[email protected] ~]# man bash -i If the -i option is present, the shell is interactive. –noprofile Do not re

互動式shell和互動式shell、登入…

也算寫過一些Bash指令碼的人了,不過對與這幾個概念,還不是很清楚,於是惡補了一下。 互動式shell和非互動式shell、登入shell和非登入shell的區別。 首先,這是兩個不同的維度來劃分的,一個是是否互動式,另一個是是否登入。 互動式shell和非互動式shell 互動式模式就是shell等

GNU Wget 1.20 釋出,互動式命令列下載工具

GNU Wget 1.20 已釋出,GNU Wget 是一個非互動式的命令列下載工具,支援 HTTP、HTTPS、FTP 和 FTPS 等廣泛使用的網路協議。 值得注意的更新: 新增 `--retry-on-host-error` 選項,用於將  local error 視為臨

Linux下使用SSH互動式遠端執行命令指令碼

原創文章,轉載請註明— 作者: 黃文海 出處: http://viscent.iteye.com/http://blog.viscenthuang.info     非互動式在遠端主機上執行命令或者指令碼可以幫助我們快速完成一些任務。比如,在叢集環境中,同時在各個結點上的日

兩種Linux下互動式命令的實現

一、概述在Linux環境,有多種實現自動化的指令碼語言,如Shell、Python、Perl、Tcl等。Shell語言因與Shell外殼結合緊密,是最常見的實現自動化的指令碼語言。同時,在Linux環境

Windows下用DOS命令subst一個目錄變為一個磁碟驅動器

subst,DOS命令,用於路徑替換 ,將路徑與驅動器號關聯,就是把一個目錄當作一個磁碟驅動器來看,不過不能格式化。運用一定技巧,subst命令還可以實現隱藏驅動器、特殊軟體的安裝、模擬光碟自動執行

SSH批量分發管理&互動式expect

目錄 1 SSH批量分發管理 基於口令的,如何實現批量管理:expect、pssh、sshpass 期中架構分享 1.1 測試環境 m01(Server) eth0:192.168.90.61/24 eth1:172.1

expect 互動式sftp

#網路摘錄整理 #!/usr/local/bin/expect -f  #<---insert here your expect program location#procedure to attempt connecting; result 0 if OK, 1 el

分發系統expect遠程登錄,執行命令,傳遞參數

分發系統expect遠程登錄 執行命令自動退出 傳遞參數 分發系統:shell 上線腳本expect實現遠程傳輸文件,執行命令,系統上線等功能expect 腳本遠程登錄vim 1.expect#! /usr/bin/expectset host "192.168.91.129"

Jmeter GUI 命令行執行腳本文件

https 建議 路徑 列表 gui clas 重建 lan 我們 介紹 進行性能測試時,Jmeter 官方文檔聲明是不建議在 GUI 執行的,此時需要用到命令行。 第一步:環境配置 把 Jmeter安裝目錄\bin 添加到 系統環境變量path 第二步:命令參數

常用的tar解壓命令總結下

tar -c: 建立壓縮檔案 -x:解壓 -t:檢視內容 -r:向壓縮歸檔檔案末尾追加檔案 -u:更新原壓縮包中的檔案 這五個是獨立的命令,壓縮解壓都要用到其中一個,可以和別的命令連用但只能用其中一個。下面的引數是根據需要在壓縮或解壓檔案時可選的。 -z

Linux 下 expect 指令碼語言中互動處理常用命令

Linux 下 expect 指令碼語言中互動處理常用命令 Linux 下 expect 指令碼語言中互動處理常用命令 1. #!/usr/bin/expect 告訴作業系統腳本里的程式碼使用那一個 shell 來執行。這裡的 expect 其實和 Linux 下的 bash、win

grep怎樣使用與(and) 或(or) (not)命令

一.grep 之 或(or) 使用grep 過濾一個特定字串 adb logcat | grep "mms" 11-21 17:19:45.011 1522 3091 I ActivityManager: START u0 {act=android.intent.action.MAI

Linux Shell Bash 互動與互動式指令碼

互動式的shell會在tty上從使用者輸入中讀取命令. 另一方面, 這樣的shell能在啟動時讀取啟動檔案, 顯示一個提示符, 並預設啟用作業控制. 也就是說, 使用者可以與shell互動. shell所執行的指令碼通常都是非互動的shell. 但是指令碼仍然可以訪問它的tty. 甚至可以在指令碼中模擬一

/etc/profile與/etc/bashrc、互動式互動式、login與non-login shell的區別

線上的memcached又掛了,仍然沒有得到core檔案。排查原因,同事發現啟動memcached的指令碼存在可疑問題。 問題一:沒有設定memcached工作目錄,有可能core dump時沒有工作