如题所述
1.å®è£ expect
éè¦å å®è£ tclï¼apt-get install tcl
apt-get install expect
2.expect使ç¨
2.1ä¸ä¸ªç®åçè¾å ¥å¯ç æä½
#ï¼/usr/bin/expect
set timeout 100
set password "123456"
spawn sudo rm -rf zzlogic
expect "root123456"
send "$password\n"
interact
说æï¼
第ä¸è¡#ï¼/usr/bin/expect表示使ç¨expectçshell交äºæ¨¡å¼
setæ¯å¯¹åépasswordèµå¼
set timeout 100ï¼è®¾ç½®è¶ æ¶æ¶é´ä¸º100ç§ï¼å¦æè¦æ§è¡çshellå½ä»¤å¾é¿å¯ä»¥è®¾ç½®è¶ æ¶æ¶é´é¿ä¸äºãexpectè¶ è¿è¶ æ¶æ¶é´æ²¡æçæµå°è¦æ¾çå符串ï¼åä¸æ§è¡ï¼é»è®¤timeout为10ç§
spawnå¨expectä¸æ§è¡shellèæ¬
expect对éè¿spawnæ§è¡çshellèæ¬çè¿åè¿è¡å¤æï¼æ¯å¦å å«ââä¸çå段
sendï¼å¦æexpectçæµå°äºå å«çå符串ï¼å°è¾å ¥sendä¸çå 容ï¼\nç¸å½äºå车
interactï¼éåºexpectè¿åç»ç«¯ï¼å¯ä»¥ç»§ç»è¾å ¥ï¼å¦åå°ä¸ç´å¨expectä¸è½éåºå°ç»ç«¯
2.2expectçå½ä»¤è¡åæ°
[lindex $argv n]è·å¾index为nçåæ°ï¼indexä»0å¼å§è®¡ç®ï¼
$argc为å½ä»¤è¡åæ°ç个æ°
[lrange $argv 0 0]表示第ä¸ä¸ªåæ°
[lrange $argv 0 3]表示第1å°ç¬¬3个åæ°
ä¾å¦scp_service.shæ件ï¼å¯ä»¥./scp_service.sh -rmæ¥æ§è¡ï¼è¿æ¶æ¯èµå¼äºä¸ä¸ªåæ°
set option [lindex $argv 0]ï¼è·å¾ç¬¬ä¸ä¸ªåæ°åå°åéoptionä¸ï¼åæ°æ¯çindexæ¯ä»0å¼å§è®¡ç®çï¼
2.3if...elif...else...
expectæ¯æifè¯å¥ï¼
if {æ¡ä»¶1} {
æ¡ä»¶1æ§è¡è¯å¥
} elif {æ¡ä»¶2} {
æ¡ä»¶2æ§è¡è¯å¥
} else {
å ¶ä»æ åµæ§è¡è¯å¥
}
说æï¼
1.ifçæ¡ä»¶ç¨{}æ¥å å«æ¡ä»¶
2.ifååé¢ç{}å¿ é¡»æç©ºæ ¼éå¼
3.两个è±æ¬å·ä¹é´å¿ é¡»æç©ºæ ¼éå¼ï¼æ¯å¦if {} {}ï¼å¦åä¼æ¥é expect:extra characters after close-brace
3.使ç¨{æ¥è¡æ¥ä¸ä¸è¡ï¼æ以ifçæ¡ä»¶åéè¦å å·¦è±æ¬å·{
4.elseä¸è½åç¬æ¾ä¸è¡ï¼æ以elseè¦è·å¨}åé¢
2.4 expect {}ï¼å¤è¡ææï¼å¹é å°åªæ¡æ§è¡åªæ¡
èæ¯ï¼ææ¶æ§è¡shellåé¢æç»ææ¯ä¸åºå®çï¼æå¯è½æ¯è¯¢é®æ¯yes/noï¼æå¯è½æ¯å»è¾å ¥å¯ç ï¼æ以å¯ä»¥ç¨expect{}
è±æ¬å·å æ¾å¤è¡è¯å¥ï¼ä»ä¸è³ä¸å¹é ï¼å¹é å°åªä¸ªexpectæ§è¡åªå¥ã
3.shellä¸è°ç¨expectæ¥å®ç°ç»å½
ææ¯éè¿å¨shellèæ¬ä¸æ§è¡expectèæ¬çæ¹å¼æ¥å®ç°çãå½ç¶å¯ä»¥å°shellä¸å®ä¹çä¸äºåéä¼ éç»expectèæ¬ä½ä¸ºåæ°è¾å ¥ã