如何在运行vncserver:1时自动输入密码?

3
我正在编写一个bash脚本,将连接到我的远程计算机并运行一些命令,其中一个是vncserver:1,但此命令需要输入密码。我应该如何在shell脚本中实现这个过程?(我只需要运行脚本,不需要输入密码)
这是我的脚本:
ssh -i $pem -o StrictHostKeyChecking=no -o 'IdentitiesOnly yes' admin@$ip -f '
            pkill vnc ;
            vncserver :1 ;
            '

2
使用 vncpasswd 代替... 无需以明文形式存储密码。 - anishsane
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Vi Do
"vncviewer可以通过-passwd选项提供密码文件。" vncpasswd不会向vncviewer提供密码。vncpasswd用于创建您的密码的票据/哈希值。然后使用生成的密码文件使用vncviewer。请再次检查我在先前评论中提供的man链接。 - anishsane
我不是在询问vncviewer。当启动名为vncserver的程序时,会要求我们输入一个叫做vncpassword的密码。vncviewer是在客户端运行的,而我们需要在服务器端输入密码。我已经找到了解决方案,如下所示。非常感谢! - Vi Do
哦,抱歉...我误读了问题陈述... - anishsane
1个回答

2
感谢大家, 现在已经没问题了:
ssh -i $pem -o StrictHostKeyChecking=no -o 'IdentitiesOnly yes' admin@$ip -f '
            pkill vnc ;
            expect -c "
            spawn vncserver :1;
            expect -nocase \"password:\" {
                send \"$pass\r\"; 
                expect -nocase \"Verify:\" {
                    send \"$pass\r\"; 
                    expect -nocase \"Would you like to enter a view-only password \(y\/n\)\?\" {
                        send \"n\r\"; 
                        expect eof }; }; interact } ;
            "
            '

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接