在我的大学打印连接到互联网的打印机上的文件非常慢。因此,我正在编写一个脚本,用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
'"
答案 0 :(得分:3)
根本不需要复制文件;您只需通过标准输入将其发送到lpr
即可。
ssh -t $CID@adress lpr -P "$PRINTER" < "$FILENAME"
(ssh
从$FILENAME
读取并将其转发给远程命令。)
答案 1 :(得分:0)
启动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