Home php c# sql c c++ javascript python java go android git linux asp.net django .net node.js ios xcode cocoa iphone mysql tomcat mongodb bash objective-c scala visual-studio apache elasticsearch jar eclipse jquery ruby-on-rails ruby rubygems android-studio spring lua sqlite emacs ubuntu perl docker swift amazon-web-services svn html ajax xml java-ee maven intellij-idea rvm macos unix css ipad postgresql css3 json windows-server vue.js typescript oracle hibernate internet-explorer github tensorflow laravel symfony redis html5 google-app-engine nginx firefox sqlalchemy lucene erlang flask vim solr webview facebook zend-framework virtualenv nosql ide twitter safari flutter bundle phonegap centos Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 28

0
votes
answers
6 views
+10

Laravel 5:如何複製(流),距離亞馬遜S3文件到FTP?

0

我得動大的內容,我不希望投入從AWS S3存儲與Laravel的文件系統到FTP。Laravel 5:如何複製(流),距離亞馬遜S3文件到FTP?

我知道如何流本地內容到S3,但還沒有找到一個解決辦法,從S3到FTP。

我發現的最接近是this,但我被困在適應它爲我的情況。

下面是缺少了什麼在我的代碼(??):

$inputStream = Storage::disk('s3')->getDriver()->?? 
$destination = Storage::disk('ftp')->getDriver()->?? 

Storage:disk('ftp')->getDriver()->putStream($destination, $inputStream); 
沙发
0
0

我想我找到了解決辦法:

$input = Storage::disk('s3')->getDriver(); 
$output = Storage::disk('ftp')->getDriver(); 

$output->writeStream($ftp_file_path, $input->readStream($s3_file_path)); 
0
votes
answers
6 views
+10

服務器響應我與GNU TSL錯誤

-3

我試圖連接到一個公司的服務器,我應該訪問他們的數據庫,但服務器重播我以下錯誤消息。服務器響應我與GNU TSL錯誤

Fout: GnuTLS-fout -15: An unexpected TLS packet was received. 
Fout: Kan niet verbinden met server 

我有所有的登錄憑證,您認爲問題是什麼?

+2

Stack Overflow是編程和開發問題的網站。這個問題似乎與題目無關,因爲它不涉及編程或開發。請參閱幫助中心的[我可以詢問哪些主題](http://stackoverflow.com/help/on-topic)。也許[超級用戶](http://superuser.com/)或[Unix&Linux堆棧交換](http://unix.stackexchange.com/)會是一個更好的地方。 – jww

沙发
0
-1

看來您正在使用隱式TLS而不是顯式TLS。

FTP_over_TLS: Explicit vs Implicit FTPS

FTPS(FTP通過TLS)在兩個不兼容的方式擔任了。如果使用 明確的FTPS,則客戶端連接到正常的FTP端口,並且 顯式切換到具有「AUTH TLS」的安全(TLS)模式,而隱式FTPS是舊式服務,假設TLS模式從 開始連接(並且通常監聽TCP端口 990而不是21)。在FileZilla客戶端中,這意味着在主機上添加「FTPES://」作爲連接「顯式」FTPS服務器的前綴或 「FTPS://」作爲傳統「隱式」服務器的連接(您也可能需要 將端口設置爲990)。

在他同一個頁面,您可以找到how to setup client

對於一個客戶端連接到使用TLS的服務器,則需要爲 連接的主機被設置爲FTPS。在FileZilla客戶端中,這意味着 在主機前加上「明確」FTPS的「FTPES://」或舊式「隱式」FTPS的「FTPS://」 。

0
votes
answers
5 views
+10

如何從主線程突然殺死一個線程?

1

我有一個使用serve_forever命令的ftp服務器。這個ftp服務是在一個線程中調用的,我想要做的是當我點擊我的GUI上的停止按鈕時,我想突然關閉主線程中的線程。如何從主線程突然殺死一個線程?

import os 
import sqlite3 
from pyftpdlib import ftpserver 
def main(): 
    authorizer = ftpserver.DummyAuthorizer() 
    #does something 
    address = ('127.0.0.1', 10221) 
    ftpd = ftpserver.FTPServer(address, handler) 

    # start ftp server 
    ftpd.serve_forever() 
if __name__ == '__main__': 
    main() 

這是我這就要求FTP服務

def start_ftp(self): 
    self.ftp_status.setText("Running") 
    self.ftp_status.setStyleSheet("Background : light green") 
    #thread.start_new_thread(FtpService) 

def stop_ftp(self): 
    self.ftp_status.setText("Stopped") 
    self.ftp_status.setStyleSheet("Background : red") 
    #what should i put here for the desired result 

請幫傢伙

+0

可你只是店' ftpd'在某處公開可見(即在全局中)並從主線程調用'close'或'close_all'? – Useless 2012-08-15 11:57:36

+0

@Useless:thanx爲快速響應,你會友好地舉例說明如何執行上面給出的答案 – TheCreator232 2012-08-15 12:07:36

+2

你不想突然關閉一個線程。你想停止你的FTP服務。思考工作而不是執行工具是編寫明智的多線程代碼的第一步。 – 2012-08-15 12:22:26

沙发
0
2

按照documentation主線程,close_all應該 「停止服務......」,所以serve_forever應該返回。

Store中ftpd對象在一個全局變量(目前是本地main),你可以調用從主線程closeclose_all


根據您的意見,步驟是:

  1. 使ftpd = ftpserver.FTPServer(address, handler)global variable
  2. 通話ftpd.close_all()時要停止服務FTP連接
+0

thanx的多線程編程中尋求幫助,你的解決方案就能解決。 – TheCreator232 2012-08-15 16:21:27

0
votes
answers
5 views
+10

老重複的數據包

-1

我發現這個問題在本書叫彼得大號Dordal計算機網絡的介紹,我遇到了這個問題,我發現它有點棘手:老重複的數據包

在TFTP協議:

如果客戶端在後續連接上更改其端口號,但服務器沒有,防止服務器發送的舊重複數據包被新客戶端接受?

如果服務器在後續連接上更改其端口號,但客戶端沒有,防止服務器發送的舊重複數據包被新客戶端接受?

http://intronetworks.cs.luc.edu/current/html/udp.html?highlight=cumulative#old-duplicate

沙发
0
0

TFTP不應該被用來當連接不是近乎完美(=本地,很少跳)。 UDP本身並不可靠,並且TFTP在這方面做得不夠好。

但是,這個例子有點假設。客戶端和服務器都可能使用OS選擇的臨時端口。重複數據包匹配的時間窗口非常小 - 路由器之間的隊列刷新時間 - 以及臨時端口號需要同時繞回兩端。

也就是說,TFTP只能用於安全無關緊要的短連接 - 如果有的話。有更多的現代替代方案可靠和安全的文件傳輸。

0
votes
answers
5 views
+10

檢查存在

0

我需要檢查,如果通過了wget存在的文件和測試退出代碼檢查存在

現在,我運行以下命令:

wget -q --spider --ftp-user='ftpuser'--ftp-password='ftpassword' ftp://192.168.1.63/fileexists.txt 
echo $? #0 

及其return code is 0

但在情況下,文件不存在

wget -q --spider --ftp-user='ftpuser'--ftp-password='ftpassword' ftp://192.168.1.63/filenotexist.txt 
echo $? #0 

return code is equal 0,即使沒有

所以,我已經試過沒有--spider選項和我8退出代碼,這意味着該文件不存在

但是,如果有一個wget實際下載它。 問題是如果我有一個大文件'檢查'。

任何想法?

謝謝

+0

使用'wget'以外的其他工具。有一個叫做lftp的文件,可以合理編寫腳本。 – tripleee

+0

-bash:lftp:找不到命令 ...不能使用它 –

+0

什麼版本的'wget'是這個? – Joe

沙发
0
1

如何使用捲曲?

curl -I --silent ftp://username:[email protected]/filenotexist.txt >/dev/null 

$?如果文件存在,則爲0, $?如果文件不存在,則不是0。

+0

我喜歡wget,但是我要使用這個替代品 謝謝 –

0
votes
answers
5 views
+10

啓用ssh-dss公鑰算法的Python FTP util

0

我使用FTP連接處理python腳本。我無法通過ftplib.FTP和pysftp連接到FTP。啓用ssh-dss公鑰算法的Python FTP util

手動FTP連接有效,但我必須啓用在當前openSSH版本中默認禁用的dss-ssh算法。 腳本中缺少哪種配置?

手動連接:

$ sftp -oHostKeyAlgorithms=+ssh-dss ftp_address 

我的腳本中使用pysftp:

import pysftp 
srv = pysftp.Connection(host=my_host, password=my_pass) 

堆棧跟蹤:

Traceback (most recent call last): 
    File "/Applications/PyCharm CE.app/Contents/helpers/pydev/pydevd.py", line 2411, in <module> 
    globals = debugger.run(setup['file'], None, None, is_module) 
    File "/Applications/PyCharm CE.app/Contents/helpers/pydev/pydevd.py", line 1802, in run 
    launch(file, globals, locals) # execute the script 
    File "/Applications/PyCharm CE.app/Contents/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile 
    exec(compile(contents+"
", file, 'exec'), glob, loc) 
    File "/ftp_tool.py", line 8, in <module> 
    srv = pysftp.Connection(host=my_host, password=my_pass) 
    File "/ftp_service/venv/lib/python3.4/site-packages/pysftp/__init__.py", line 132, in __init__ 
    self._tconnect['hostkey'] = self._cnopts.get_hostkey(host) 
    File "/ftp_service/venv/lib/python3.4/site-packages/pysftp/__init__.py", line 71, in get_hostkey 
    raise SSHException("No hostkey for host %s found." % host) 
paramiko.ssh_exception.SSHException: No hostkey for host my_host found. 

使用Python 3.4.3

+1

也許你可以試試['paramiko'](http://docs.paramiko.org/en/2.4/api/sftp.html#module-paramiko.sftp) – mhawke

+0

的確,根據mhawke和Martin的指示,我使用paramiko。 我的另一個問題是主機名未由paramiko解決。 現在我直接使用IP地址。 如果時間允許,我會進一步調查。 – Tsachi

沙发
0
1

SFTP和FTP兩種完全沒有關係編輯協議。

您無法使用FTP協議(ftplib)連接到SFTP服務器。

pysftp/Paramiko應該工作。如果沒有,請發佈一個關於pysftp/Paramiko的新問題,並提供更多詳細信息。

+0

謝謝Martin。 pysftp不起作用 - 我編輯了我的問題以包含pysftp代碼+異常。 – Tsachi

+1

你有兩個問題。一個關於爲SFTP選擇庫(我已經回答)。還有一個關於pysftp不起作用的問題。這是一個不同的問題。考慮另外一個問題。並確保您指定了您正在使用的Paramiko和pysftp的版本。 –

0
votes
answers
4 views
+10

ASP.NET使用瀏覽器下載SFTP文件

-3

我試圖使用C#和asp.net下載SFTP文件(.csv),但所有示例都需要我有一個遠程文件目錄。ASP.NET使用瀏覽器下載SFTP文件

對於這種情況,我需要瀏覽器下載文件,而不是放在目錄中,因爲瀏覽器(客戶端)無法直接將文件放入目錄。

有沒有人以前做過這個?

我試圖使用SSH.NET,但沒有找到辦法做到這一點。

+0

「一個SFTP文件」。 SFTP是Secure FTP協議,不是一種文件類型。完全不清楚你在問什麼,或者它是如何與ASP.NET相關的。 –

+0

除非瀏覽器能夠使用SFTP(你可能不能依賴的東西),否則瀏覽器將不會涉及到這一點。你的服務器需要適當的庫。它需要下載文件,然後允許用戶像從其他文件一樣從Web服務器下載文件。 – mason

+0

您可以考慮編寫能SFTP服務器流的文件並立即寫字節到HTTP響應流中,因此,你的服務器成爲代表一個瀏覽器的適配器(不理解SFTP)的處理程序和SFTP服務器(這不明白http) –

沙发
0
0

解決了這個,通過SFTP將文件移動到我的服務器,然後normaly下載文件。

string host = @"host"; 
     string username = "user"; 
     string password = "pass"; 
     string remoteDirectory = "/remote"; 

     string localDirectory = Server.MapPath(@"pdf"); 

     using (var sftp = new SftpClient(host, username, password)) 
     { 
      sftp.Connect(); 
      var files = sftp.ListDirectory(remoteDirectory); 

      foreach (var file in files) 
      { 
       string remoteFileName = file.Name; 
       if (remoteFileName == "APADEAATTT.csv") 
       { 

        using (Stream file1 = File.OpenWrite(localDirectory + "APADEAATTT.csv")) 
        { 
         sftp.DownloadFile(remoteDirectory + "APADEAATTT.csv", file1); 
        } 
       } 
      } 

     } 

     FileInfo fileInfo = new FileInfo(localDirectory+"APADEAATTT.csv"); 
     Response.Clear(); 
     Response.AddHeader("Content-Disposition", "attachment;filename=" + fileInfo.Name); 
     Response.AddHeader("Content-Length", fileInfo.Length.ToString()); 
     Response.ContentType = "text/csv"; 
     Response.Flush(); 
     Response.WriteFile(fileInfo.FullName); 
     Response.End(); 
0
votes
answers
3 views
+10

線程問題

1

我正在做一個ftp項目,它會做多次上傳,我正在做的過程是壓縮文件然後加密,然後切成幾塊併發送給服務器,我將所有這些東西分配給thread.likewise線程將在那裏爲我分配的每個文件。線程問題

這是新的代碼塊,它只有一個功能,在這裏出現了同樣的錯誤 也請幫我找出什麼是錯在這裏

public partial class Form1 : Form 

{ ArrayList的AscendingList =新的ArrayList(); ListViewItem Litem = null; 線程MyThread = null; ThreadStart Starter = null;

public Form1() 
{ 
    InitializeComponent(); 
} 

private void btn_split_Click(object sender, EventArgs e) 
{ 
    foreach (ListViewItem litem in listView1.Items) 
    { 
     Starter = delegate { SplitFile(litem.Text,litem.SubItems[1].Text,int.Parse(litem.SubItems[2].Text)); }; 
     MyThread = new Thread(Starter); 
     MyThread.IsBackground = true; 
     MyThread.Start(); 
    } 
} 
public void SplitFile(string inputFile, string outputPrefix, int chunkSize) 
{ 
    int pointr = 0; 
    byte[] buffer = new byte[chunkSize]; 

    using (FileStream fs = new FileStream(inputFile, FileMode.Open, FileAccess.Read, FileShare.None)) 
    { 
     int index = 0; 
     pointr = fs.Read(buffer, 0, buffer.Length); 
     while (pointr != 0) 
     { 
      using (FileStream fso = new FileStream(outputPrefix + "\" + index + ".log", FileMode.Create)) 
      { 
       AscendingList.Add(fso.Name); 
       fso.Write(buffer, 0, pointr); 
       pointr = fs.Read(buffer, 0, buffer.Length); 
      } 
      index++; 
     } 
    } 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    Litem = new ListViewItem(); 
    Litem.Text = "E:\butterfly.mpg"; 
    Litem.SubItems.Add("H:\karthik"); 
    Litem.SubItems.Add("102400"); 
    listView1.Items.Add(Litem); 
} 

private void button2_Click(object sender, EventArgs e) 
{ 
    Litem = new ListViewItem(); 
    Litem.Text = "E:\karthik.mpeg"; 
    Litem.SubItems.Add("H:\karthik\karthik"); 
    Litem.SubItems.Add("102400"); 
    listView1.Items.Add(Litem); 
} 

}

+2

請修復格式。 – Yogesh 2009-11-04 05:44:46

+1

您能提供異常消息和堆棧跟蹤嗎? – Jehof 2009-11-11 09:14:24

+0

請使用'Path.Combine()'! – knoopx 2009-11-15 22:32:43

沙发
0
13

這段代碼亂七八糟;你應該嘗試清理它。在這個過程中,你可能會發現你的bug被自己修復了。

  • 你有幾個空的catch子句是一個大紅旗(註釋掉使用塊是一個更好的主意)。這些應該全部被刪除;這是不太可能的,這是一個好主意。
  • 你有一個thread.Sleep聲明可能是超級的 - 如果不是,那是一個線程錯誤的跡象。
  • 您應該將基本功能分解爲輔助方法。這會增加代碼的可讀性和可調試性 - 並以私有幫助程序方法的名稱形式自動提供一些文檔。例如,您的讀寫A寫入B代碼可能是一種方法 - 您在SplitFileDecompress中都複製了此功能。
  • 你有一堆錯誤的.Read(語句,假設讀取實際讀取完整緩衝區 - 它不,它等待,直到至少有1個字節可用並返回可立即使用的值,或者如果流完成返回0 。你應該從來沒有忽略由.Read(方法返回的字節數。如果您將SplitFileDecompress中基於(更好)的基於代碼的代碼拆分爲輔助方法,那麼您也可以在其他位置使用此代碼。 當寫入網絡或物理驅動器時,這很可能導致問題。
  • 多個使用塊可以在沒有額外花括號的情況下編寫,以提高可讀性。如果你這樣做,VS.NET將不會爲每個using()子句添加縮進級別,而只是爲其中的一個添加縮進級別。
  • 這對我來說並不是很清楚,但看起來你正在處理一堆中間文件。一種更清潔的(並且可能更快)的方法是簡單地處理流並且具有恰好提供文件流的包裝器。
  • 您不需要在.Close()之前.Flush()
  • IDisposable放在一個使用塊中是個好習慣。即使是像MemoryStreamCryptoStream這樣的東西 - 這可能沒有關係,但我看到你是.Close() - 無論如何(所以你不保存任何代碼),並且你違反了代碼合同,你可能不會知道他們的實施,所以你依靠不明確的行爲;這不值得。
  • .Substring(....).ToString()相當於.Substring()

基本上,它看起來像你使用的技術,你不太熟悉作出重大複雜的事情;嘗試將它分成小而乾淨的小塊,讓您更精確地找出您需要的東西 - 這樣您就可以更好地控制任何新技術。

清理你的第一個;然後嘗試找出你剩下的任何錯誤 - 如果你有點幸運,你將不會有任何...

我希望這有助於!

板凳
0
1

爲什麼創建FSOUT時,你試圖寫在不同的線程在同一文件中,您使用FileShare.ReadWrite?這不會起作用,至少不會像這樣使用GZipStream。對於您正在編寫的其他文件,您指定了FileShare.None,我認爲這意味着在此情況下您不會嘗試從多個線程寫入同一文件。

+0

hi maxc 我試圖從不同的線程寫入同一個文件,我chnaged gzipstream也,但我的一個線程被停止說無法訪問文件。是一個競速條件 – karthik 2009-11-04 10:30:10

地板
0
2

這是有問題的:

string EncryptedFile = ""; 
Slicer.SplitFile(EncryptedFile, lt.SubItems[3].Text, 10240); 

的Slicer.SplitFile()調用被要求在一個不存在的文件工作。

4楼
0
1

無法訪問該文件

這是多個線程試圖訪問同一文件的多線程應用普遍。

你需要做的是確保不會發生。
您不應該共享任何對象,並且每個線程都應該使用自己的文件(不能使用intersectinos)。

看着代碼我可以看到切片機。 instace是共享的。
嘗試將所有代碼移動到Thread的Starter委託並實例化其中的所有對象。

+0

使用多線程從文件中讀取很好。如果仔細設計,這種方法可以提高性能。 – 2009-11-13 14:19:01

+0

是的。我的觀點是,如果執行不當,它不好。 – 2009-11-14 00:31:36

+0

這是正確的答案,這是我的代碼失敗 的正確原因 – karthik 2009-12-30 05:29:28

0
votes
answers
3 views
+10

複製文件到Linux [python]的

-1

有哪些不同的模塊/方法來從Windows計算機複製文件到可用的Linux服務器在python複製文件到Linux [python]的

我使用FTPLIB API連接到Windows服務器的嘗試,但IM無法與錯誤的事 - socket.error:[錯誤111]拒絕連接

什麼是我可以連接到Windows計算機的目錄

+0

這要看是什麼樣的連接(即服務器/服務)你的Linux服務器提供(和你被允許訪問哪些)... –

+0

@sme的Windows計算機上生成一個文件(VPC),我需要在Linux服務器上覆制到我的磨刀石目錄,這是問題背後的基本思想。 我可以使用winscp bhi這個過程每天重複5次。 –

+0

你的意思是你有'ssh''訪問你的Linux服務器? –

沙发
0
0

如果下複製或列出文件中的其它模塊有權訪問Linux服務器,並自動在Windows上生成文件,您可以執行以下操作:

  1. 生成MACHING

  2. 將它添加到Linux機器的authorized_hosts您的Windows SSH密鑰

  3. 在Windows上安裝簡單的控制檯SCP工具

  4. 編寫簡單的CMD腳本來複制文件的幫助下,類似於:

    scp c: path to file.txt [email protected]:/home/user/file.txt

  5. 每次都會自動運行這個腳本,然後在windows主機上生成文件。

+0

感謝您的回覆。 這是我會選擇的最後一招。我想在Linux端創建一個腳本來獲取在Windows上生成的文件。 –

0
votes
answers
3 views
+10

從VBA調用WinSCP命令行時獲取「命令參數太多」

1

Upload file via FTP from Excel VBA非常有幫助,我使用代碼將本地文件夾同步到我的FTP服務器。從VBA調用WinSCP命令行時獲取「命令參數太多」

Call Shell(_ 
    CurrentProject.Path & "WinSCP.com /log=" & CurrentProject.Path & "ftp.log /command " & _ 
    """open ftp://user:[email protected]/"" " & _ 
    """synchronize local " & localfolder & " /www/remotefolder/wines -filemask=""*.png"" " & _ 
    """exit""") 

我想在結束時發出exit命令,但代碼讓我對命令「同步」一個

參數太多。

日誌中的線告訴我

synchronize local C:localfolderwines /www/remotefolder/wines -filemask=*.png exit 

exit是在同一行synchronize一個,當我使用put腳本,這不會發生。我能做些什麼來防止這種情況發生?

+0

確實清理換計算器錯誤,感謝poining出來 –

沙发
0
1

您錯過synchronize命令後的結束報價。並且-filemask價格的報價必須翻倍。或者實際上,您不需要它們,因爲該值不包含空格。

這樣做:

"""synchronize local " & localfolder & " /www/remotefolder/wines -filemask=*.png""" & _ 

https://winscp.net/eng/docs/commandline#syntax

+1

感謝您的快速回答,擔任我想它。喜歡你在WinSCP上的工作! –