PSCP, Unix makineden hedef yolun boşlukları olan Windows makinesine kopyalamak için nasıl kullanılır?


14

Bir dosyayı Unix makineden Windows makinesine kopyalamak için bir C # programında PSCP kullanırken sorun yaşıyorum. Sorun, yalnızca Windows makinesindeki hedef klasörde bir boşluk olduğunda oluşur. Örneğin, aşağıdakiler işe yarar: (NOT: bu örnek için IP adresi ve parola değiştirilmiştir)

pscp.exe -pw MyPassword root@127.0.0.1:/etc/myfolder/myfile.opt C:\download

Ama bunu şu şekilde değiştirdiğimde:

pscp.exe -pw MyPassword root@127.0.0.1:/etc/myfolder/myfile.opt C:\download files

Aşağıdaki hatayı alıyorum: Birden fazla uzak kaynak desteklenmiyor.

Bunun, PSCP'nin alanı başka bir hedef olarak yorumlaması nedeniyle olduğunu anlıyorum. Ama bunu nasıl yapabilirim? Tırnak içine koymak ve boşluktan kaçmak gibi her türlü şeyi denedim. Aşağıdakilerin hepsini denedim ve hiçbir şey işe yaramıyor:

pscp.exe -pw MyPassword root@127.0.0.1:/etc/myfolder/myfile.opt "C:\download files"
pscp.exe -pw MyPassword root@127.0.0.1:/etc/myfolder/myfile.opt C:\"download files"
pscp.exe -pw MyPassword root@127.0.0.1:/etc/myfolder/myfile.opt C:\download\\ files

Herhangi bir fikir?

Yanıtlar:


18

Doğru cevap muhtemelen WinSCP ve C # kitaplığını kullanmak olsa da, hedef klasörde bir boşluk olduğunda PSCP'nin çalışmasını sağlamanın bir yolunu buldum.

Doğru cevap bunu yapmaktır:

pscp.exe -pw MyPassword root@127.0.0.1:/etc/myfolder/myfile.opt "C:\download files"

Görünüşe göre, yukarıdaki durumun işe yaramadığını düşündüren başka bir sorunum vardı. Başlangıçta PSCP.EXE yürütülebilir dosyasının tam yolunu kullanıyordum. Tam yol boşluklar içeriyordu. Bu yüzden aşağıdakileri yapmaya çalışıyordum:

"C:\My PSCP Folder\pscp.exe" -pw MyPassword root@127.0.0.1:/etc/myfolder/myfile.opt "C:\download files"

Ve ben Process.Start () kullanarak C # denemek çalışıyordu ve başarısız oldu. PSCP yolunda veya hedef yolunda bir boşluk varsa, ancak her ikisini birden yapamadığında bunu halledebilir gibi görünüyordu. Windows Ortam değişkenlerime PSCP yürütülebilir yolunu ekleyerek bunu düzelttim. Şimdi sadece PSCP.EXE aramak mümkün ve hedef klasör çevresindeki tırnak işaretleri ile çalışır.


10

Kullanma pscp.

( PuTTY'nin üzerine kurulu olan) WinSCP istemcisi bir .NET derlemesi sağlar . İşte bir örnek .


Buna baktım ve farklı bir problemle karşılaştım. Görünüşe göre WinSCP SSH Ana Bilgisayar Anahtarını gerektirir (ki bende yok). PSCP kullanırken Ana Makine Anahtarının kabulünü otomatikleştirmenin bir yolu vardı. Ama WinSCP C # belgelerini okurken söyleyebileceğimden, Host Key'i otomatik olarak kabul etmenin bir yolu yok gibi görünüyor. Herhangi bir fikir?
Corey Burnett

1
@CoreyBurnett: Her zaman aynı sunucuya mı bağlanıyorsunuz?
user1686

Bir Windows makinesine kurulacak ve potansiyel olarak farklı Linux sunucularına bağlanacak bir uygulama oluşturuyorum. PSCP kullanırken, komut satırına Ana Bilgisayar Anahtarını otomatik olarak kabul etmesini söylemenin bir yolunu buldum. Bu şekilde Host Key'in vaktinden önce ne olduğunu bilmeme gerek yoktu. Ancak bu seçeneği C # ve WinSCP kullanarak bulamıyorum.
Corey Burnett

Şahsen, bir SSH istemcisi doğrulama veya kullanıcı onayı olmadan ana bilgisayar anahtarlarını kabul ederse ciddi bir güvenlik sorunu olarak değerlendiririm.
user1686

Katılıyorum. Ancak bu, bir dizüstü bilgisayara yüklenecek bir uygulama oluşturduğumuz ve daha sonra dizüstü bilgisayarın kontrollü bir ortamda Unix kutusuna bağlanacağı çok özel bir durumdur. Bu kurulum müşterilere satılacaktır. İnternete bile bağlı değildir. Ben sadece uygulamanın operatörü Host Key şeyler hakkında bilmek veya endişelenmenize gerek kalmaması için kurulumu ve kullanımı basit hale getirmeye çalışıyorum. Sadece işe yaramalı.
Corey Burnett

1

Hedef klasöre bir nokta ekleyin. Aşağıdakiler ekteki ile çalışmalıdır . örneğin:

"C:\My PSCP Folder\pscp.exe" -pw MyPassword root@127.0.0.1:/etc/myfolder/myfile.opt "C:\download files\."

0
pscp.exe -pw MyPassword root@127.0.0.1:/etc/myfolder/myfile.opt "C:\download files"

Öncelikle, daha önce de belirttiğiniz gibi, yolunuzda boşluklar var. Bu yüzden "C: \ download files" tırnaklarını kullanmanız akıllıca olur. İkinci olarak, işaret ettiğiniz gibi pscp'yi garip bir yol olmadan çağırmak için başvurunuzu PATH'nize eklemeniz gerekir. ve üçüncü olarak. Her şeyi alıntılayarak bu karışıklığı önleyen adlandırma kurallarını kullanın.

camelCaseNaming
underscore_naming

Her ikisi de sorunu çözüyor ve 100500 kat daha soğuk görünüyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.