簡體   English   中英

一個bash腳本的密碼提示,包括SCP和SSH

[英]One password prompt for bash script including SCP and SSH

在我的大學里,從連接到Internet的打印機打印文檔確實很慢。 因此,我正在編寫一個腳本,該腳本使用SCP將文件發送到遠程計算機,通過SSH發送一系列命令以從遠程計算機(與打印機連接更好)打印文檔,然后刪除遠程計算機上的文件。電腦。

它的工作原理就像一種魅力,但是令人討厭的部分是它兩次提示輸入密碼,一次是使用SCP發送文件,一次是通過SSH發送命令。 如何解決呢? 我讀到您可以使用身份文件? 事實是,有多個用戶將使用它,而且許多人在bash編程方面的經驗非常有限,因此腳本必須執行包括創建文件在內的所有操作。

用戶將主要使用Mac,而遠程計算機則使用Red Hat。 到目前為止的代碼如下:

    #!/bin/sh

    FILENAME="$1"
    PRINTER="$2"

    # checks if second argument is set, else prompt for it
    if [ -z ${PRINTER:+x} ]; then 
        printf "Printer: ";
        read PRINTER;
    fi

    # prompt for username
    printf "CID: "
    read CID

    scp $FILENAME $CID@adress:$FILENAME
    ssh -t $CID@adress bash -c "'
    lpr -P $PRINTER $FILENAME
    rm $FILENAME
    exit
    '"

您根本不需要復制文件; 您只需將其通過標准輸入發送到lpr

ssh -t $CID@adress lpr -P "$PRINTER" < "$FILENAME"

ssh$FILENAME讀取並將其轉發到遠程命令。)

啟動一個ssh-agent並添加密鑰:

eval $(ssh-agent -s)
ssh-add            # here you will be prompted
scp "$FILENAME" "$CID@adress:$FILENAME"
ssh -t "$CID@adress" bash -c <<END
  lpr -P "$PRINTER" "$FILENAME"
  rm "$FILENAME"
END
ssh-agent -k       # kill the agent

暫無
暫無

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

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