0

C アプリケーションのログ ファイルをサーバーに送信するftp.expファイルをコーディングしました。

#!/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 コードから Expect スクリプトを実行できます。これらの関数は、自分でも使用できるfork(2)execve(2)pipe(2)dup(2)waitpid(2)などのシステムコールを使用しています。

高度な UNIX プログラミング高度な Linux プログラミングについてもっと学ぶことを強くお勧めします。学ぶべきいくつかの概念とコツがあります。

ssh単純なパスワードをネットワーク上で遠くのリモート FTP サーバーに送信するスクリプトを期待するよりも(を使用して)使用する方がよいと思いますscp(このアプローチにはセキュリティ上の問題がいくつかあります)。

于 2012-09-08T13:53:08.673 に答える