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=""
PRINTER=""
# 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
在我的大学里,从连接到 Internet 的打印机打印文档真的很慢。因此,我正在编写一个脚本,使用 SCP 将文件发送到远程计算机,通过 SSH 发送一系列命令以从远程计算机(与打印机连接更好)打印文档,然后删除远程文件计算机。
它的工作原理非常棒,但烦人的部分是它提示输入密码两次,一次是在使用 SCP 发送文件时,一次是在通过 SSH 发送命令时。如何解决?我读到你可以使用身份文件?问题是,多个用户会使用它,而且许多人在 bash 编程方面的经验非常有限,因此脚本必须执行所有操作,包括创建文件。
用户将主要使用 Mac,而远程计算机使用 Red Hat。这是到目前为止的代码:
#!/bin/sh
FILENAME=""
PRINTER=""
# 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