
我在執行 putty(從命令列)時遇到了一些問題-m爭論。請幫幫我,或者如果您知道的話建議一種更好的方法:)
命令(來自“運行”):
putty -ssh user@machine -pw password -m C:\test.txt
“測試.txt”命令:
PROMPT_COMMAND='echo -ne "\033]0;'$( ifconfig | head -2 | tail -1 | awk '{print $2}')'\007"'
問題:
它會打開會話然後立即關閉
它應該做什麼:從具有定義標題的命令列開啟 ssh 會話
謝謝。
答案1
我相信你嘗試過做類似的事情這個答案。但問題是,那裡提供的範例命令要從伺服器上的檔案執行。
它們不能作為命令傳遞以使用 -m 開關執行。 PuTTY的這個開關就是模仿Linux 命令列 SSH 用戶端的行為:
ssh user@foo command
這樣 sshuser
在伺服器上記錄 a foo
,在那裡運行command
,然後退出。看起來 -m PuTTY 正在做完全相同的事情。
我的建議
就是在遠端伺服器上準備一個腳本,並以不同的方式配置PuTTY。首先,您需要建立一個文件,其中包含登入後要執行的命令,我們稱之為.title
cat > ~/.title
然後只需輸入或複製並貼上您需要的任何內容,然後按 Ctrl+D。現在讓我們測試設定標題:
echo -ne "\033]0;PuTTY\007"
您甚至可以直接在終端機中嘗試上述操作。如果 PuTTY 的視窗標題沒有更改,則很可能您的發行版已經設定預設 PROMPT_COMMAND 變數。您可以透過在終端機中執行以下命令來確認
echo $PROMPT_COMMAND
unset PROMPT_COMMAND
echo -ne "\033]0;PuTTY test\007"
關鍵是取消設定PROMPT_COMMAND
變數的當前值。然後最後一個命令應將視窗標題設為PuTTY test
。
我的解決方案
對我有用的是在 PuTTY 中準備一個會話,其中GUI 中的「遠端指令」框設定:
/bin/bash --rcfile ~/.title
只要記住提供此會話的名稱(例如:SessionName),然後按 PuTTY 設定第一頁上「已儲存會話」清單附近的「儲存」按鈕:)
然後你可以啟動 PuTTY 並告訴它加載這個會話
putty -load SessionName -l user -pw password
是的,這很遺憾,但是對於已儲存的會話,沒有相當於「遠端命令」方塊的命令列。這就是為什麼人們必須克服所有這些障礙:(
TL;DR 版本
假設您正確執行了所有這些步驟,一切都應該正常運作:
~/.title
在遠端電腦上建立腳本- 使用執行 Bash 的遠端命令準備一個會話,該命令將執行
~/.title
- 告訴 PuTTY 在啟動時載入準備好的會話,指定使用者和密碼
專家提示
您應該學習使用 SSH 金鑰並在 Windows 匣中執行“Pageant”(PuTTY 驗證代理程式),而不是在命令列(也可能在腳本中)以明文形式指定密碼。
答案2
我現在還沒有 ssh 來測試它,但是http://www.derkeiler.com/Newsgroups/comp.security.ssh/2012-04/msg00005.html
「如果您只是想讓視窗保持開啟狀態,請查看,請將 sleep 10 放在腳本末尾,等待 10 秒。如果您想使用 shell,請exec /bin/bash
在末尾使用。Shai”
另外兩個連結提供了一些見解。
新增者: 巴洛普
以下沒有使用 putty,它使用 cygwin 中的 openssh 該a.a
檔案可以包含 ls 或命令來更改提示符。這是本地的。
$ ssh 127.0.0.1 "cat | bash" < a.a
相關,請參閱我剛剛發布的答案 -https://unix.stackexchange.com/questions/87405/how-can-i-execute-local-script-on-remote-machine-and-include-arguments/208952#208952