簡體   English   中英

ssh成功登錄后,期望腳本不會發送命令

[英]Expect script not sending commands after successful ssh login

啟動以下腳本時,ssh登錄成功,並且我可以進行交互,但是它不發送cd folder命令。 如果我確定這是我要發送的第一個命令,那么我expect "$"命令是否很有用?如何發送cd folder命令?

這是短期期望腳本:

#!/usr/bin/expect
eval spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no host@exemple.com
expect "password"
send "mypassword\r"
expect "$"
send "cd folder\r"
interact

謝謝!

您需要expect更具體的shell提示。

根據預期的手冊:

請注意,在許多編輯器中, ^$匹配行的開頭和結尾。 但是,由於Expect 不是面向行的 ,因此這些字符匹配當前在Expect匹配緩沖區 中的數據開頭和結尾 (與行相對)。

你應該使用創建的SSH密鑰ssh-keygen (或像這樣 ),並要求服務器管理員將公鑰添加到~/.ssh/authorized_keys的服務器上。 然后,您無需指定密碼即可登錄到遠程計算機。 否則,任何對腳本具有讀權限的人都可以代表您訪問遠程服務器 關於這個問題有很好的討論

使用配置的鍵,您可以簡單地

ssh user@exemple.com -- 'cd folder; # whatever'

或者,使用here文檔的語法:

#!/bin/bash -
ssh -tt user@host <<'EOC'
cd folder
# do something else
exit
EOC

注意,第一個-t選項強制偽終端分配。 即使ssh沒有本地tty ,多-t選項也會強制tty分配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM