我收到输入为 vnc://172.16.41.101&passwd=test
我想用这个输入做的是:
1. 提取 IP 地址。
2. 提取密码。
3. 使用提供的 ip 和密码启动 vncviewer。
4. 一旦收到输入,所有这些都应该是自动化的。
提取ip和密码很容易。然后我使用提供的 ip 启动 vncviewer,但是如何在不提示用户输入密码的情况下将密码传递给它?
我收到输入为 vnc://172.16.41.101&passwd=test
我想用这个输入做的是:
1. 提取 IP 地址。
2. 提取密码。
3. 使用提供的 ip 和密码启动 vncviewer。
4. 一旦收到输入,所有这些都应该是自动化的。
提取ip和密码很容易。然后我使用提供的 ip 启动 vncviewer,但是如何在不提示用户输入密码的情况下将密码传递给它?
假设(通过标签)您正在使用命令提示符中的 vncviewer 程序,我认为您可以执行以下操作:
echo "password" | vncviewer -autopass host:display
使用您的示例: vnc://172.16.41.101&passwd=test
echo "test" | vncviewer -autopass 172.16.41.101
如果您vncviewer
没有该-autopass
选项,您可以使用vncpasswd
生成可以传递给-passwd
选项的密码文件:
vncviewer -passwd <(vncpasswd -f <<<"password") host:display
在-autopass
我的vncviewer
.
工具都没有vncpasswd
(显然是自带的vnc-server
)。
xvfb
使用,进行演示,在虚拟 X 环境中x11vnc
运行程序(如果已安装)。gimp
并在vncviewer
不提示输入密码的情况下显示。
x11vnc -storepasswd 1234 /tmp/vncpass
xvfb-run --listen-tcp --server-num 30 --auth-file /tmp/xvfb.auth -s "-ac -screen 0 1920x1080x24" gimp
x11vnc -rfbport 4544 -rfbauth /tmp/vncpass -display :30 -forever -auth /tmp/xvfb.auth
vncviewer -passwd /tmp/vncpass machine:4544
一个班轮:
x11vnc -storepasswd 1234 /tmp/vncpass && xvfb-run --listen-tcp --server-num 30 --auth-file /tmp/xvfb.auth -s "-ac -screen 0 1920x1080x24" gimp & x11vnc -rfbport 4544 -rfbauth /tmp/vncpass -display :30 -forever -auth /tmp/xvfb.auth & vncviewer -passwd /tmp/vncpass $(hostname):4544
如果没有提供更多细节,很难完美地回答这个问题,例如发布代码/命令/配置以实现我的建议......例如,您需要准确指定哪个 vnc 服务器、客户端、平台每边,等等,等等。
也就是说,如果您可以重新设计所有这些工作方式 - 我建议您根本不要使用密码!
相反,设置一个SSH 隧道,并使用密钥对身份验证来保护它。使用此计划时,您甚至可以删除 VNC 的任何防火墙例外!
如果您这样做,您不仅不必提供密码,而且整个 VNC 系统将更加安全!