Điểm:-1

Tại sao tập lệnh PSFTP bị lỗi khi chạy dưới dạng hệ thống?

lá cờ cn

Tôi có một tệp bó Windows cmd sẽ truy xuất danh sách các tệp trên máy chủ FTP thông qua sFTP bằng PuTTY PSFTP exe và sử dụng tệp đó để xử lý thêm. Cmd là:

tiếng vang ls | psftp -l myusername -pw mycomplexpwd FTPServerHostname > C:/Users/myuser/Desktop/ls.txt

Nó được cho là xuất danh sách trong ls.txt tệp mà tôi sử dụng trong các tập lệnh khác. Khi chạy với tư cách người dùng bình thường, tôi nhận được danh sách ổn. Tuy nhiên, khi sử dụng Trình lập lịch tác vụ và lên lịch cho tập lệnh là HỆ THỐNG người dùng, tôi chỉ nhận được điều này trong tệp đầu ra:

Thư mục làm việc từ xa là /
psftp> thoát

Tôi đoán rằng có một vấn đề trong đường ống | cách sử dụng hoặc một cái gì đó vì vậy tôi cũng đã thử sử dụng cú pháp này nhưng cũng có kết quả tương tự:

psftp -l myusername -pw mycomplexpwd FTPServerHostname < C:/Users/myuser/Desktop/lscmd.txt > C:/Users/myuser/Desktop/ls.txt

Điều gì có thể gây ra sự cố khi lên lịch công việc dưới dạng HỆ THỐNG thay vì người dùng của tôi? Và làm thế nào để có được danh sách như HỆ THỐNG? Lưu ý rằng khi chạy tập lệnh với tư cách Quản trị viên (nhấp chuột phải - Chạy với tư cách Quản trị viên) tôi nhận được danh sách ổn, vấn đề chỉ xảy ra khi sử dụng trình lập lịch tác vụ và lên lịch tác vụ như HỆ THỐNG.

Hệ điều hành là Windows Server 2012 R2.

lá cờ cn
Tôi đang bỏ phiếu để đóng câu hỏi này vì nó được đăng chéo lên SO: https://stackoverflow.com/questions/70041315/how-to-script-sftp-commands-with-psftp
Điểm:0
lá cờ cn

Vì vậy, sau khi tìm hiểu kỹ một chút, hóa ra PSFTP không nhận ra các khóa của máy chủ ftp. Tôi đã mở cmd như HỆ THỐNG (mà có thể là một chút khó khăn!) và được kết nối qua PSFTP, được chấp nhận tin tưởng máy chủ (máy chủ sFTP) và sau đó tập lệnh hoạt động như mong đợi! Nó không gây ra vấn đề gì cho những người dùng khác vì chúng đã được sử dụng trong quá trình thử nghiệm và có lời nhắc trước đó!

FYI khóa cũng được lưu trữ trong Sổ đăng ký dưới HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys, vì vậy nó có thể được thêm vào đó cho những người dùng khác nếu bạn không muốn đăng nhập theo cách thủ công (tôi đã thêm kiểm tra đó vào tập lệnh của mình để thêm nó nếu thiếu đối với bất kỳ người dùng nào đang chạy tập lệnh)..

CHỈNH SỬA: Tôi tin rằng vấn đề lớn nhất của tôi là nhận được cmd như HỆ THỐNG vì vậy tôi có thể gỡ lỗi những gì đang xảy ra, một khi tôi có thể (xem liên kết ở trên để biết cách tôi đã làm), điều đó trở nên rõ ràng đối với tôi.Để tham khảo và rõ ràng hơn, bên dưới là đầu ra của lệnh trước khi thêm khóa, chỉ ẩn các phần nhạy cảm:

C:\Users\myuser>echo ls | psftp -l myftpuser -pw mycomplexpswd sftp_server
Khóa máy chủ của máy chủ không được lưu trong bộ nhớ cache. Bạn không có gì đảm bảo
rằng máy chủ là máy tính mà bạn nghĩ.
Dấu vân tay khóa rsa2 của máy chủ là:
ssh-rsa 2048 SHA256: thecomplexfancyhostkey
Nếu bạn tin tưởng máy chủ này, hãy nhập "y" để thêm khóa vào
PuTTY và tiếp tục kết nối.
Nếu bạn muốn tiếp tục kết nối chỉ một lần mà không cần
thêm khóa vào bộ đệm, nhập "n".
Nếu bạn không tin tưởng máy chủ này, hãy nhấn Quay lại để từ bỏ
sự liên quan.
Lưu trữ khóa trong bộ đệm? (y/n, Return hủy kết nối, tôi để biết thêm thông tin) 
Sử dụng tên người dùng "myftpuser".
Thông báo biểu ngữ xác thực trước từ máy chủ:
| Đăng nhập FTP của công ty - Vui lòng nhập thông tin xác thực hợp lệ để tiếp tục
Kết thúc tin nhắn biểu ngữ từ máy chủ
Lời nhắc xác thực tương tác bàn phím từ máy chủ:
Kết thúc lời nhắc tương tác bàn phím từ máy chủ
Thư mục làm việc từ xa là /
psftp> thoát
lá cờ so
Nhưng bạn không thể nhận được *"Thư mục làm việc từ xa là /"* nếu đây là sự cố. Vì vậy, bạn đã không cung cấp cho chúng tôi thông tin chính xác.
amyassin avatar
lá cờ cn
@MartinPrikryl Tôi hiểu tại sao bạn lại cho rằng như vậy nhưng đó là những gì tôi nhận được. Tôi cũng đã thử nó ở một máy chủ khác và nhận được kết quả tương tự! Không phải những gì tôi mong đợi là tốt ..Lỗi không được đưa vào tệp chỉ những dòng đó..
lá cờ so
Bạn sẽ không nhận được thông báo *"Khóa máy chủ của máy chủ không được lưu trong bộ nhớ cache"* cho `ls.txt`, vì bạn chỉ đang chuyển hướng thiết bị xuất chuẩn, không phải thiết bị xuất chuẩn. Đó là mong đợi. â Nhưng bạn cũng không thể nhận được *"Thư mục làm việc từ xa là /"*, vì bạn chỉ có thể nhận được điều đó sau khi thực sự kết nối, điều mà bạn không thể làm được.
amyassin avatar
lá cờ cn
@MartinPrikryl Vâng, tôi hiểu và tôi hoàn toàn đồng ý với bạn, nhưng đó là điều đã xảy ra. Bất cứ điều gì có thể đã đi sai hoặc khác bạn nghĩ? Tôi đã không cung cấp thông tin sai, chỉ là những gì tôi nhận được ..
lá cờ so
Tôi không hiểu bình luận của bạn. + Nhân tiện, giải pháp tốt hơn để chấp nhận khóa máy chủ là sử dụng công tắc `-hostkey`.
amyassin avatar
lá cờ cn
@MartinPrikryl Tôi đã xóa khóa khỏi Sổ đăng ký và thử lại từ cmd và chỉnh sửa câu trả lời của mình để bạn có thể thấy kết quả tôi nhận được. Tôi tin rằng hầu hết trong số đó là trong thiết bị lỗi chuẩn, nhưng nó có đầu ra là `Thư mục làm việc từ xa là /`.
amyassin avatar
lá cờ cn
Ngoài ra, cảm ơn về mẹo `-hostkey`, tôi tin rằng điều đó tốt hơn..
lá cờ so
Ok, vậy là bạn *đã kết nối*, vì `ls` được coi là xác nhận lời nhắc (dưới dạng `n`). Và vì không có thêm lệnh nào trong đầu vào nên không có gì khác được thực hiện. Ok, xin lỗi sau đó. (Ngược lại với `-b`, bạn sẽ không kết nối được vì không có phản hồi cho lời nhắc).
lá cờ so
Vì vậy, điều đó có nghĩa là với `-b` bạn sẽ không nhận được *"Thư mục làm việc từ xa là /"*, đúng không? Trái ngược với những gì câu hỏi của bạn trên SO nói.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.