ওপেনএসএসএইচ এসএফটিপি সার্ভারের সাহায্যে বাধাযুক্ত আপলোডগুলি সনাক্ত বা লগ কিভাবে করবেন?


9

আমার এই সমস্যাটি রয়েছে যেখানে আমাদের একজন গ্রাহক এসএফটিপি-আইএন কেটে কাটা তথ্য। সমস্যাটি আমাদের শেষ হয় কিনা তার বিষয়ে আমি নিশ্চিত নই। আমি এসএফটিপি লগিং সক্ষম করেছি কিন্তু এটি কোনও আপলোড বাধা পেয়েছে কিনা তা সনাক্ত করার অনুমতি দেয় না।

উদাহরণস্বরূপ, আমি যদি এসএফটিপি ক্লায়েন্টটিকে আগুন জ্বালিয়ে দিচ্ছি এবং ^Cআপলোডের মাঝখানে আঘাত করি তবে সার্ভারটি এমন কিছু বলে close "/data/README.md" bytes read 0 written 5366, যা একটি নিরবচ্ছিন্ন আপলোড থেকে আলাদা করা যায় না।

আমি অনুমান করি যে .partউপসর্গের মতো কিছু কাজ করবে তবে সার্ভার ফল্টের অন্যান্য পোস্টগুলি দেখে, আমি মনে করি না যে ওপেনএসএইচএফএফপি সার্ভার দিয়ে এটি সম্ভব।

সুতরাং, আমার পক্ষে কোনও ফাইল আপলোড বাধাগ্রস্ত হয়েছে কিনা তা সনাক্ত করার কোনও উপায় আছে?

উত্তর:


8

আমি ধরে নিয়েছি যে "sftp ক্লায়েন্ট" দ্বারা আপনি একটি ওপেনএসএইচ এসএফটিপি ক্লায়েন্টকে উল্লেখ করেছেন। "সমস্যা "টি হ'ল আপনি যখন Ctrl+Cটিপেন তখন এটি আপলোডটি থামিয়ে দেয় এবং পরিষ্কারভাবে দূরবর্তী ফাইলটি বন্ধ করে দেয়, ঠিক যেমন আপলোড সম্পূর্ণরূপে সমাপ্ত হয় (নোট করুন এটি একটি সঠিক আচরণ এবং অন্যান্য অনেক এসএফটিপি ক্লায়েন্ট একই আচরণ করে)। তাই আপলোডটি বাধাগ্রস্ত হয়েছে তা জানাতে সার্ভারের একেবারেই কোনও উপায় নেই।


ওপেনএসএসএইচ ক্লায়েন্টটি ফাইলটি তৈরি করার সময় সার্ভারে একটি আকারের ইঙ্গিত প্রেরণ করার সাথে এটির কঠোরভাবে কথা বলতে হবে। তবে ওপেনএসএইচ সার্ভারটি সেই তথ্য ব্যবহার করে না এমনকি লগও করে না। যদিও আকারটি লগ করার জন্য কোডটি সংশোধন করা বেশ সহজ হবে, যদি এটি আপনার জন্য বিকল্প হয়।

দেখা process_opensftp-server.c:

a = get_attrib();
flags = flags_from_portable(pflags);
mode = (a->flags & SSH2_FILEXFER_ATTR_PERMISSIONS) ? a->perm : 0666;
logit("open \"%s\" flags %s mode 0%o",
    name, string_from_portable(pflags), mode);

logitবিবৃতিটি এতে পরিবর্তন করুন :

logit("open \"%s\" flags %s mode 0%o size %llu",
    name, string_from_portable(pflags), mode, (unsigned long long)a->size);

নোট করুন যে আকারের ইঙ্গিতটি পাঠানো .চ্ছিক। কিছু এসএফটিপি ক্লায়েন্ট এটিকে প্রেরণ করবে (উদাঃ ওপেনএসএসএইচ বা উইনসিসিপি), কিছু না (যেমন পিএসএফটিপি, ফাইলজিলা, বা এলএফটিপি) দেবে না। যেমন একটি ক্ষেত্রে, আপনি 0 ইন পাবেন a->size


ক্লায়েন্ট যদি সত্যিই আপলোডটি বাতিল করে দেয় (রিমোট ফাইলটি পরিষ্কারভাবে বন্ধ না করে, যেমন কখন sftp হত্যা করা হয়), আপনি এটি "বাধ্য" উপসর্গ থেকে "বন্ধ" রেকর্ডে বলতে সক্ষম হবেন:

জোর করে "/data/README.md" বাইটস 0 লিখিত 5366 পড়ুন


1
বাহ, আপনি উইনসিসিপি তৈরি করেছেন ?? বড় আপস ডুড। উত্তরের জন্য ধন্যবাদ, আমি এটি করব।
সুরজিকাল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.