0

我编写了一个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 -- "xxxx\r"
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.txt\r"
expect -exact "put /home/User/test.txt test2.txt\r"
send -- "\r"
expect -re {[2]{2,}[6]{1,}}
send -- "quit\r"
expect eof

该脚本工作正常,但如何从C Application执行文件。

4

2 回答 2

3

您需要使用libexpect并从其 api 调用您的脚本。

我只找到了它的 php 绑定,但我这里没有 Debian 来告诉你什么包提供了基本包。

于 2012-09-08T13:52:36.703 回答
1

您可以使用system(3)popen(3)库函数从 C 代码运行期望脚本。这些函数使用系统调用,如fork(2)execve(2)pipe(2)dup(2)waitpid(2),您也可以自己使用。

我强烈建议学习更多关于高级 unix 编程高级 linux 编程的知识;有一些概念和技巧需要学习。

我相信您会更好地使用ssh(with scp),而不是期望脚本通过网络将纯密码发送到远程远程 FTP 服务器(您的方法存在一些安全问题)。

于 2012-09-08T13:53:08.673 回答