我编写了一个ftp.exp文件,它将C应用程序的日志文件发送到服务器。
#!/usr/bin/expect set timeout -1 spawn ftp xxx.xxx.xxx 21 match_max 100000 expect -re {[2]{2,}[0]{1,}} send -- "usrxxxx" expect -exact "usrxxxxx" send -- "r" expect -re {[3]{2,}[1]{1,}} send -- "xxxxr" expect -exact "r 230 Access granted for xxxxxxxxxx !r Remote system type is UNIX.r Using binary mode to transfer files.r ftp> " send -- "put /home/User/test.txt test2.txtr" expect -exact "put /home/User/test.txt test2.txtr" send -- "r" expect -re {[2]{2,}[6]{1,}} send -- "quitr" expect eof
脚本工作正常,但我怎么能从C应用程序执行文件。
TCL Expect ::在Windows XP上运行的脚本没有运行在Windows 7上。有什么想法吗?
从Linux执行powershell脚本
在system中使用Perl期望()
在expect脚本中包含#include
如何在Linux tclsh中通过光标键获取命令历史logging
您可以使用system(3)或popen(3)库函数从C代码运行期望的脚本。 这些函数正在使用像fork(2) , execve(2) , pipe(2) , dup(2) , waitpid(2)这样的系统调用 ,你也可以自己使用它们。
我强烈建议学习更多关于高级的unix编程和高级的linux编程 ; 有一些学习的概念和技巧。
我相信你会更好地使用ssh (与scp ),而不是一个期望的脚本发送简单的密码到远方的远程FTP服务器(你的方法有一些安全问题)。
您需要使用libexpect并从其api调用您的脚本。
我发现只有PHP的绑定,但我没有在这里的Debian告诉你什么包提供的基础包。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。