如何将密码管道传输到带有zenity,pv和dd的sudo



我想让用户从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>

相关内容

  • 没有找到相关文章

最新更新