ডিরেক্টরি যখন অন্য ব্যবহারকারীর দ্বারা পরিবর্তন করা হয় তখন স্ক্রিপ্টটি কীভাবে চালানো যায়?


13

আমি জানি এটির মতো বিষয়গুলি নিয়ে কিছুটা আলোচনা হয়েছে। তবে এখানে আমি মূলত যা করার চেষ্টা করছি।

আমার কাছে একটি ওয়াচ ডিরেক্টরি বলা আছে watchedএবং যখনই কোনও ডিরেক্টরি সেই ডিরেক্টরিতে যুক্ত করা হয় তখন আমি এমন একটি স্ক্রিপ্ট ট্রিগার করতে চাই syncbh.shযা এই ডিরেক্টরি থেকে ফাইলগুলি সরিয়ে নিয়ে যায় এবং সেগুলি একটি দূরবর্তী সার্ভারে আপলোড করে।

watchedসতর্কতাটি হ'ল ফাইলগুলি একজন ব্যবহারকারী (ইউজার 2) দ্বারা ডিরেক্টরিতে তৈরি করা হয় , তবে স্ক্রিপ্টটি অন্য (ইউজার 1) দ্বারা চালিত হয়।

আমি ব্যবহার চেষ্টা করেছি incron এই কাজ করা সম্ভব, কিন্তু একটি প্রধান সমস্যা মধ্যে চলমান রাখতে কারণ যখন স্ক্রিপ্ট রুট অধিকারসহ USER1 দ্বারা ম্যানুয়ালি মৃত্যুদন্ড কার্যকর করা যেতে পারে, incron ডেমন আসলে স্বয়ংক্রিয়ভাবে অন্যান্য USER2 মাধ্যমে আপনি কোনো ফাইল সৃষ্টি ঘটনা দ্বারা আলোড়ন সৃষ্টি হয় না।

ইনোটোকমিং আরও ভাল বিকল্প হবে কিনা তা নিয়ে আমি ভেবেছি , তবে এটির বাক্য গঠন কীভাবে কাজ করে তা সম্পর্কে আমি অস্পষ্ট। এটি সম্পাদন করার আরও ভাল উপায় যদি হয়, বা আমি ইনোচোমিং ব্যবহার করে শেষ করি তবে কমান্ড সিনট্যাক্সটি /home/user1/watchedডিরেক্টরিটি দেখতে এবং স্ক্রিপ্টটি সম্পাদন করতে বললে সেই ডিরেক্টরিতে /usr/local/bin/syncbh.shকোনও ফাইল তৈরি / সংশোধিত হয়?

কোন সাহায্যের অনেক প্রশংসা হবে।


কোন ব্যবহারকারীর স্ক্রিপ্ট চালাতে হবে?
এবি

এবং কোন ব্যবহারকারী হিসাবে চালানো উচিত inoticoming?
এবি

আপনার প্রয়োজন অনুসারে উত্তরটি গ্রহণ করুন এবং আমি সেই উত্তরের অনুদান দেব।
হেলিও

উত্তর:


5

ব্যবহার inoticoming:

আপনি একটি স্ক্রিপ্ট লাগাতে পারেন /etc/init.d/যে রান inoticomingবুট করার সময়।

  1. একটি নতুন ফোল্ডার তৈরি রাখা inoticomingগত log /? pidজন্য watchedফোল্ডার:sudo mkdir -p /var/log/inoticoming/watched/

  2. একটি স্ক্রিপ্ট তৈরি করুন inoticoming_watchedমধ্যে /etc/init.d/:

* watchedফোল্ডারের পুরো পাথ এবং সম্পাদনার জন্য স্ক্রিপ্টের পুরো পাথের সাথে মেলে <path_to_folder> এবং <path_to_script> পরিবর্তন করতে ভুলবেন না

#!/bin/sh

case "${1}" in
    start)
        inoticoming --logfile '/var/log/inoticoming/watched/inoticoming.log' --pid-file '/var/log/inoticoming/watched/inoticoming_last_pid.txt' <path_to_folder> <path_to_script> \;
    ;;

    stop)
        kill -15 $(< /var/log/inoticoming/watched/inoticoming_last_pid.txt tee)
    ;;

    restart)
        ${0} stop
        sleep 1
        ${0} start
    ;;

    *)
    echo "Usage: ${0} {start|stop|restart}"
    exit 1
    ;;
esac
  1. সম্পাদনাযোগ্য হিসাবে স্ক্রিপ্ট চিহ্নিত করুন: sudo chmod u+x /etc/init.d/inoticoming_watched

  2. নিশ্চিত হয়ে নিন যে ডাকা স্ক্রিপ্টটি কার্যকর inoticoming_watchedহয়।

  3. বুট সময় rc.dপরিষেবাটি inoticoming_watchedচালু করতে আপডেট করুন :sudo update-rc.d inoticoming_watched defaults

আপনি inoticomingলগ ইন চেক করতে পারেন /var/log/inoticoming/watched


4

প্রথমত, ইনোটোকিং ইনস্টল করুন :

sudo apt-get install inoticoming

তারপরে এই কমান্ডটি ব্যবহার করুন:

ইনোটোমিংয়ের চলমান প্রক্রিয়াগুলিতে মনোযোগ দিন, কারণ এগুলি একাধিকবার শুরু করা যেতে পারে।

$ inoticoming /home/user1/watched /usr/local/bin/syncbh.sh /home/user1/watched/{} \;
              ^                   ^                        ^
              |                   |                        |
              ^-- The directory to be monitored            |
                                  |                        |
                                  ^-- Your script          |
                                                           ^-- The parameter for your script
  • প্রক্রিয়া ব্যাকগ্রাউন্ডে চলে এবং দেখছে is /home/user1/watched

  • সেই ডিরেক্টরিতে কোনও ফাইল যুক্ত বা পরিবর্তিত হলে স্ক্রিপ্টটি /usr/local/bin/syncbh.shডাকা হয়।

    • এই স্ক্রিপ্টের প্যারামিটারটি এই ক্ষেত্রে /home/user1/watched/<name_of_changed_or_modified_file>

    • {} ফাইলের নাম দ্বারা প্রতিস্থাপন করা হয়


-2

প্রথমত, watchedডিরেক্টরিটি দেখার জন্য একটি স্ক্রিপ্ট :

#! /bin/bash

folder=/path-to-watched

inotifywait -m -q  -e create  -e modify  '%:e %w%f' $folder | while read file
  do
    #make the sync here
  done

দ্বিতীয়টি অন্য ব্যবহারকারী (ব্যবহারকারী 2) হিসাবে সিঙ্ক তৈরি করতে:

sudo -H -u user2 bash -c 'sh /usr/local/bin/syncbh.sh ' 

এখন অর্ডার একটি ব্যবহারকারী প্রম্পট না করার জন্য, আপনি আপনার সেট করতে পারেন sudoএকটি ফাইলে পাসওয়ার্ড এবং পাসওয়ার্ড এই ফাইল থেকে প্রয়োজন হলে (নোট আপনি ব্যবহার করতে হবে পড়া -Sসঙ্গে sudoফাইল থেকে পাসওয়ার্ড পেতে)।

sudoমনে করুন একটি ফাইলের মধ্যে আপনার পাসওয়ার্ড রাখুন passwd.txt, তাহলে উপরের কমান্ডটি স্তন্যপান করা হবে

sudo -S -H -u user2 bash -c 'sh /usr/local/bin/syncbh.sh ' < /path-to/passwd.txt

এখন সামগ্রিক স্ক্রিপ্টটি হবে:

#! /bin/bash

folder=/path-to-watched

inotifywait -m -q  -e create  -e modify  '%:e %w%f' $folder | while read file
  do
      sudo -S -H -u user2 bash -c 'sh /usr/local/bin/syncbh.sh ' < /path-to/passwd.txt      
done

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