A. 怎麼查看ftp日誌
FTP伺服器的日誌設置,可以通過修改主配置文件/etc/vsftpd.conf實現。主配置文件中與日誌設置有關的選項包括xferlog_enable 、xferlog_file 和al_log_enable 等。
xferlog_enable
如果啟用該選項,系統將會維護記錄伺服器上傳和下載情況的日誌文件。默認情況下,該日誌文件為 /var/log/vsftpd.log。但也可以通過配置文件中的 vsftpd_log_file 選項來指定其他文件。默認值為NO。
xferlog_std_format
如果啟用該選項,傳輸日誌文件將以標准 xferlog 的格式書寫,該格式的日誌文件默認為 /var/log/xferlog,也可以通過 xferlog_file 選項對其進行設定。默認值為NO。
al_log_enable
如果啟用該選項,將生成兩個相似的日誌文件,默認在 /var/log/xferlog 和 /var/log/vsftpd.log 目錄下。前者是 wu-ftpd 類型的傳輸日誌,可以利用標准日誌工具對其進行分析;後者是Vsftpd類型的日誌。
syslog_enable
如果啟用該選項,則原本應該輸出到/var/log/vsftpd.log中的日誌,將輸出到系統日誌中。
常見的日誌解決方案如下:
xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/var/log/xferlog
al_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
該方案將xferlog_enable設置為YES,表明FTP伺服器記錄上傳下載的情況,而將xferlog_std_format也設置為YES,則表明將記錄的上傳下載情況寫在xferlog_file所指定的文件中,即/var/log/xferlog文件。
同時,該方案啟用al_log_enable,表明啟用了雙份日誌。在用xferlog文件記錄伺服器上傳下載情況的同時,vsftpd_log_file所指定的文件,即/var/log/vsftpd.log,也將用來記錄伺服器的傳輸情況。
下面分別查看xferlog文件和vsftpd.log文件的內容。
xferlog內容如下:
ThuSep609:07:4820077192.168.57.1
4323279/home/student/phpMyAdmin-2.11.
0-all-languages.tar.gzb_irstudentftp0*cThuSep610:15:5920071192.168.57.1
61810/home/student/php-pdo-5.1.6-5.el5.
i386.rpmb_irstudentftp0*c
ThuSep610:17:1320071192.168.57.1
83741/home/student/php-mysql-5.1.6-5.el5.i386.
rpmb_irstudentftp0*c
TueSep1107:49:3420071127.0.0.10/
pub/[email protected]*i
TueSep1107:51:2220071127.0.0.134/
pub/[email protected]*c
TueSep1111:23:0520071192.168.57.1
83741/php-mysql-5.1.6-5.el5.i386.rpma_orstudentftp0*c
TueSep1111:31:3620071192.168.57.1
12/eng000.txta_irstudentftp0*c
TueSep1111:53:0520071192.168.57.2
367/user_listb_irstudentftp0*c
TueSep1111:56:0620071192.168.57.2
TueSep1111:57:3620071192.168.57.2
0/b_orstudentftp0*i
vsftpd.log文件內容如下:
TueSep1114:59:032007[pid3460]CONNECT:Client"127.0.0.1"
TueSep1114:59:242007[pid3459][ftp]
OKLOGIN:Client"127.0.0.1",anonpassword"?"
B. shell腳本中.ftp一個文件,如何判斷這個文件是否傳送成功了 求IT大牛指導
如果put成功
後返回0
下面判斷這個返回值就可以了
put hello.txt
if [ $? == 0 ]; then
echo "put successfully"
else
echo "put failure"
一定要在put hello.txt的下面加這個判斷
C. ftp伺服器端怎麼判斷一個文件已經傳送完成
首先,我不清楚你說的這個和我理解的是不是同一個概念。剛好之前寫過一個文件伺服器的小代碼,可以稍微分享一下。
伺服器首先read文件,read之後會有一個返回值,假設你每次read 1024個位元組,當返回值小於1024,表示已經文件已經read結束。read之後send發送文件(阻塞式),在發送完所有文件斷開連接,這時伺服器又會發送一個FIN給客戶端。(注意這里讀文件,發文件在一個大循環,循環的判斷條件就是read的位元組數)。對應客戶端接收文件也是在一個大循環里,recv阻塞式的接收文件,然後將接收到的內容寫入自己建立的空文件中,在recv的返回值為0的時候,表示接收已經結束,跳出循環,繼而斷開連接。
可能有人會有疑問,當接收完文件,斷開連接,伺服器不也就結束了嗎?其實我當時寫的伺服器有伺服器和客戶端建立了兩條TCP連接,一條用於客戶端向伺服器請求文件,另一條用於伺服器向客戶端發送文件,這樣即使下面一條連接斷開,伺服器和客戶端也不會終止,從而實現該客戶端還可以再次請求文件,同時伺服器也可以處理其他客戶端的請求(第二條連接是在客戶端向伺服器請求文件,並且伺服器有你請求的文件時建立的)。
多客戶端連接伺服器有兩種方式,一種是通過伺服器fork生成子進程,用子進程去處理和客戶端的數據傳輸,而父進程的功能就是監聽是否有子進程過來連接。還有一種方式就是通過epoll來實現(與select和poll思想相同)。
以上所有內容都是自己敲上去的,可能說的有不對或是不確切的地方,希望看見的人能提出指正,謝謝。
D. 如何在shell中判斷ftp是否成功
參考如下代碼:
nohup tar -cvf bb.tar db2ckh_20051223165402 > msg.out
ftp -i -n <<!
open $host
user $UserName $Passwd
bin
prompt
put bb.tar
bye
!
eocho o"finish"
eocho "OK!!!...."
E. 有沒有辦法在ftp一個文件的時候,判斷傳送是否成功
用ftp傳輸軟體上傳。
上傳時,會直接顯示是否成功。
而且。最傻瓜的辦法,就是登陸到空間里去看看,文件在不在。就知道了。
個人推薦一款ftp軟體CuteFTP 我用過無數FTP軟體,這個是外國的,但是很好用。
F. 怎麼判斷FTP一個文件已經上傳完畢
我做過這個,說下我的思路。
將錯誤輸出導出到文件err.log,方便後續檢查。ftp連接是否成功和文件上傳是否成功都可以通過這個來檢查。
(ftp -i -n $FTP_HOST $FTP_HOST_PORT <<FTPEOF
user $FTP_USER $FTP_PASSWORD
cd $FTP_DIR
$TRANS_MODE
put $FTP_FILENAME
quit
FTPEOF
) 2>>err.log
if [ -s err.log ]; then #文件存在且不為空
echo "FTP連接和文件上傳都成功"
else
#你可以測試一下失敗的情況看下錯誤信息
#然後用grep通過在err.log文件中查找關鍵字方法來確認是FTP連接失敗還是文件上傳失敗。
fi
返回一些參數信息不知道什麼意思。
你是要用另一個腳本來調用這個腳本嗎?還是就做在一個腳本里?
G. c# ftp 伺服器登錄 ,怎麼判斷登錄是否成功
FtpWebRequest reqFTP;
try
{
// 根據uri創建FtpWebRequest對象
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + sServerIP + "/"));
reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;;
reqFTP.UseBinary = true;
reqFTP.Credentials = new NetworkCredential(「賬號", 「密碼");
//
FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
//登陸成功
}
catch
{
//這邊就是登陸不成功
}
H. ftp日誌 查看
windows中FTP的日誌默認在c:\inetpub\logs\logfiles\ftpsvc中
I. 如何測試自己的ftp伺服器是否成功
在IE里輸入ftp://你的外網IP
成功的話就會要賬號和密碼