Win7系統使用ftp的dir或ls命令無法查看文件列表
在Win7系統的命令行模式下,使用ftp的dir或ls命令無法查看文件列表,但是使用IE卻可以查看。查找相關資料後,大致歸結為兩種原因:
權限有問題
windows自帶防火牆攔截
實驗後發現我的情況屬於第二種,具體解決方法有以下幾種:
直接關閉Windows防火牆
打開防火牆,但是設置入站規則允許ftp.exe程序接收信息
使用netsh命令設置規則
[plain]
netsh advfirewall firewall add rule name="FTP(non-SSL)" program="%systemroot%\system32\ftp.exe" action=allow protocol=TCP dir=in
netsh advfirewall set global StatefulFtp disable
命令1的作用與第二種方法相同
命令2主要用來禁止statefulFTP過濾,這條對我沒有影響,但還是建議加上
小插曲
這裡參考了兩篇相關的文章(1,2),分別使用兩條相似,卻不同的命令
[plain]
文章1
netsh advfirewall firewall add rule name="FTP (non-SSL)" action=allow protocol=TCP dir=in localport=21
netsh advfirewall set global StatefulFtp enable
[plain]
文章2
netsh advfirewall firewall add rule name=”FTP Service” action=allow service=ftpsvcprotocol=TCP dir=in
netsh advfirewall set global StatefulFTP disable
真是讓人糾結,對於文章中的 localport=21 始終無法對應到windows自帶的ftp.exe程序,後來使用tasklist命令查找ftp對應的PID編號,
再通過命令 netstat 發現ftp.exe在自己電腦上原來端口就不是21。。
而文章中的 service=ftpsvc 也沒法允許ftp.exe的例外,後來help了以下netsh命令,發現了program參數,才人為添加程序路徑。