编写脚本以响应指定文本的提示

Write a Script to respond to prompts with specified text

我正在编写一个脚本,当脚本为 运行 时,它会自动捕获屏幕截图并触发 iSight 拍摄静态照片,然后将其上传到 FTP。一切都很完美,除了一件事,我的 FTP 需要在出现提示时输入用户名和密码(在捕获两张图像后)

这是我的:

echo “GOLDENEYE ACTIVATED….”
screencapture -x screen.jpg
imagesnap Mugshot.jpg
ftp <YourServerHere>

终端响应:

Connected to <YourServerHere>

现在,出现这种情况时必须输入用户名:

220 Welcome to <ServerDomain>, FTP server standing by ...
Name (<ServerName>.<DomainName>.:<Name>): <Type UserName Here - Hit Enter>

并且,成功输入有效用户名后将输入密码:

331 Hello <UserName>, your FTP account password is required:
Password: <Type Your Password Here - Hit Enter>

输入正确的凭据后,终端将响应:

230-Login successful, your current directory is /
230 0 Kbytes used (0%) - authorized: 7340032 Kb
Remote system type is UNIX.
Using binary mode to transfer files.

然后,上传图片:

ftp> put /Mugshot.jpeg

ftp> put /Screen.jpeg

我正在尝试在给出提示后自动输入用户名和密码,以便脚本成功

文本将是 "username" 和 "password" 在给出每个提示后输入。

我对终端和脚本完全陌生,只是在业余时间玩弄,这里有任何不正确的地方请原谅,感谢您的帮助和教育!

一般的解决方案是expect command

但对于你的任务来说,这是一个大材小用。


ftp 从标准输入读取命令。

那就这样吧:

ftp -n < command.txt

-n 会阻止 username/password 的自动提示。我们使用下面的 user 命令明确提供这些。

commands.txt 文件如下所示:

open host
user user password
put /path
bye