我想让用户从Thunar或Dolphin中将ISO写入USB笔式驱动器。
为此,我创建了一个使用 dd、pv 和 zenity 的 bash 脚本。
目前,我在执行dd命令之前使用pkexec询问密码,但是pkexec窗口和zenity进度窗口同时打开。我想先打开一个 root 密码窗口,然后打开 zenity 进度窗口。
我试图先用zenity询问密码,然后我将密码管道传输到sudo,但是无论我在哪里放置"echo$PWD",密码都不会通过管道传输到sudo。
#!/bin/bash
TITLE='Zenity Progress Test'
PASSWORD=$(zenity --password
--width=300
--title="$TITLE")
if [ ! -z "$PASSWORD" ]; then
echo "Your password: $PASSWORD"
dd if=/dev/zero of="$PWD/testfile1" bs=1M count=100
pv -n testfile1 2> >(zenity --progress
--width=300
--title="$TITLE"
--percentage=0
--auto-close
--auto-kill) | echo "$PASSWORD" | sudo -S dd of="$PWD/testfile2" bs=64k oflag=dsync
echo "$PASSWORD" | sudo -S rm "$PWD/testfile1" "$PWD/testfile2"
else
echo 'No password provided'
exit 1
fi
zenity 进度窗口只是闪烁,没有传输任何内容,很可能是因为密码没有通过管道传输到 sudo。
如果将"回声$PASSWORD |sudo -S"与"pkexec"代码功能,但同时打开 pkexec 窗口和 zenity 进度窗口。
关于如何解决这个难题的任何想法?
使用 param -S 从 stdin 读取
$echo <password> | sudo -S <command>