2010-07-30 70 views
4

我想爲腳本寫入一些登錄信息,以供許多用戶使用。在python中,我將input_raw設置爲從dev/tty讀取,但是當我連接到通過ssh在服務器上運行的腳本時,它會發生可怕的故障。在ssh會話中啓用tty

想法?解決方法?

我寧願避免硬編碼腳本中的用戶名。

請謝謝。

回答

5

嘗試使用-t選項SSH:

 
    -t  Force pseudo-tty allocation. This can be used to execute arbi- 
      trary screen-based programs on a remote machine, which can be 
      very useful, e.g. when implementing menu services. Multiple -t 
      options force tty allocation, even if ssh has no local tty. 

似乎有沒有在~/.ssh/config等效的選項,所以你需要創建一個shell腳本。一個簡單的一種是:

#!/bin/sh 

ssh -t "$*" 

保存爲ssh-t什麼的,chmod +x ssh-t,並把它放在你的PATH。然後設置GIT_SSH=ssh-t告訴Git使用這個腳本。

+0

這可能會起作用,但我通過git push啓動了ssh連接。有沒有辦法注入-t選項? – myusuf3 2010-07-30 14:56:01

+0

@garbagecollector:[GIT_SSH](http://www.kernel.org/pub/software/scm/git/docs/)環境變量告訴Git哪個命令用於ssh。正如在該頁面上所解釋的那樣,要將選項傳遞給ssh,可以將其包裝在另一個shell腳本中,或使用'〜/ .ssh/config'(我推薦後者)。 – 2010-07-30 21:37:00

+0

@garbagecollector:根據[SSH - 如何在〜/ .ssh/config文件中包含「-t命令」](http://serverfault.com/questions/56086/ssh-how-to-include-t- ssh-config-file中的命令),似乎沒有-t的等效配置選項。我會創建一個shell腳本(請參閱編輯的答案)。 – 2010-08-03 20:26:49