我正在尝试编写一个shell脚本来将文件传输到运行ultra simple sftp server的远程Windows机器。 它是来自coreftp的轻型版本。 所以我没有选择使用公钥认证。
从Linux端开始,它是非英特尔平台的精简版,所以如果我想使用“期待”,我就无法安装expect / tcl / tk。 这是出于测试目的,我想从Shell脚本输入密码。有可用的方法吗?
#!/bin/sh
HOST='10.x.x.x'
USER='user'
PASSWD='passwd'
sftp $USER@$HOST
是否无法在不使用任何工具的情况下从shellscript输入密码?
答案 0 :(得分:1)
有几种选择:
答案 1 :(得分:0)
你可以使用expect ..
expect -c 'spawn sftp root@your-domain.com; expect password; send "your-password\n"; interact'
答案 2 :(得分:0)
This page在C中包含一个简单的演示程序,用于创建伪终端,可以与需要密码的应用程序(更准确地说,需要终端的应用程序)进行交互,如ftp,sftp客户端等。参考会话同一页面中还提到了lpty,这是另一个更完整的实用程序,可用于在伪终端上运行程序。
简而言之,您需要一个可以处理伪终端的程序来完成您的任务。无论如何,perl有expect模块,上面提到的直接C编程,或lpty,还有另一个伪终端程序。或者,如果您的Linux内核支持/ dev / ptmx和/ dev / pty /,您可以通过打开并访问设备文件来创建伪终端(可能来自shell脚本,但我不确定)。我怀疑你的简单Linux on ARM支持这个......
移植lpty应该比预期的容易。