লগইন ম্যাকের উপর স্ক্রিপ্ট চলছে [বন্ধ]


280

আমি ভাবছি যে আমার কম্পিউটারে আমার অ্যাকাউন্টে লগ ইন করার পরে কেউ যদি আমাকে .sh ফাইল চালাতে সাহায্য করতে সক্ষম হয় তবে আমি ভাবছি। আমি ম্যাক ওএস এক্স 10.6.7 চালাচ্ছি।

আমার কাছে একটি ফাইল রয়েছে "উদাহরণ.sh" যা আমি যখন আমার কম্পিউটারে লগইন করি তখন চালাতে চাই। আমি ইতিমধ্যে লগ ইন করার পরে এটি চালাতে আমার কোনও সমস্যা নেই, তবে আমি এটি স্বয়ংক্রিয়ভাবে চালিত হতে চাই।

লোকেরা এটি লগইন শেল ফাইলটিতে যুক্ত করতে বলছে, তবে আমি জানি না যে এটি কোথায়। কিছু সাহায্য করুন।


3
এটি অফ-টপিক নয় ... আমার ইমাস ডেমন শুরু করার জন্য আমার এটির প্রয়োজন ছিল;) বিটিডাব্লু এর সেরা উত্তরটি লিঙ্গন এক্স অ্যাপ্লিকেশনটির আইএমএইচও করুন।
শুভফিডিস

1
বিষয়টা বন্ধ করে দিলে আমার কিছু যায় আসে না। এটি ইন্টারনেটে আমি খুঁজে পেয়েছি এটি সেরা উত্তর এবং এটি শ্রদ্ধার দাবি রাখে। আমি প্রথমবার সমাধানের সন্ধানে অন্যের জন্য এটিকে উপেক্ষা করেছি এবং এটি ছিল একটি বড় ভুল!
সেথমর

উত্তর:


379

এটি অনুসরণ করুন:

  • শুরু Automator.app
  • নির্বাচন করা Application
  • ক্লিক Show libraryসরঞ্জামদণ্ডে (যদি লুকানো থাকে)
  • যোগ Run shell script (থেকেActions/Utilities )
  • উইন্ডোতে আপনার স্ক্রিপ্ট অনুলিপি করুন এবং আটকান
  • এটা পরীক্ষা করো
  • কোথাও সংরক্ষণ করুন (উদাহরণস্বরূপ আপনি Applicationsনিজের ঘরে একটি ফোল্ডার তৈরি করতে পারেন , আপনি এটি পাবেন your_name.app)

  • ফিরে যেতে System Preferences-> Accounts->Login items

  • এই অ্যাপ্লিকেশন যোগ করুন
  • পরীক্ষা & সম্পন্ন;)

সম্পাদনা করুন:

আমি সম্প্রতি এই উত্তরের জন্য একটি "ভাল উত্তর" ব্যাজ অর্জন করেছি। আমার সমাধানটি সহজ এবং কাজ করার সময়, লগইন করার সময় কোনও প্রোগ্রাম বা শেল স্ক্রিপ্ট চালানোর সর্বোত্তম উপায়টি @ ট্রাইস্বেবের উত্তরে বর্ণিত হয়েছে , যদি না আপনি ইন্টারঅ্যাক্টিভিটি চান

অটোমেটার সমাধান সহ আপনি পরবর্তীগুলির মতো কাজগুলি করতে পারেন: স্বয়ংক্রিয় স্ক্রিনশট লগইন অ্যাপ্লিকেশন

সুতরাং, কোনও স্ক্রিপ্ট চালাতে বা অ্যাপ্লিকেশনটি ছাড়তে বলা, পাসওয়ার্ড জিজ্ঞাসা করা, লগইন করার সময় অন্যান্য অটোমেটর ওয়ার্কফ্লো চালানো, শর্তসাপেক্ষে লগইন সময়ে অ্যাপ্লিকেশনগুলি চালনা করা ইত্যাদি ...


2
@ গ্রেগিমের্নিকি এলওএল, শুভ সকাল ...;) প্রায় এক বছর আগে আমার উত্তরে একটি এডিআইটি যুক্ত করেছে, যেখানে এটিও বলা হচ্ছে। তবে, গড় ব্যবহারকারীদের জন্য এটি কিছুটা সহজ, কারণ এক্সএমএল (প্লিস্ট) ফাইল তৈরি করা, অনেক ব্যবহারকারীর পক্ষে খুব ব্যবহারকারী বান্ধব নয়। যাইহোক - একটি মন্তব্যের জন্য থেক্স। ;)
jm666

4
@ গ্রেগিমের্নিকি এবং ভুলে যাবেন না, অটোম্যাটর সমাধানের সাহায্যে আপনি ইন্টারেক্টিভ লগইন-স্ক্রিপ্ট তৈরি করতে পারেন - যেমন একটি স্ক্রিপ্ট যা আপনাকে কিছু প্রবেশের জন্য জিজ্ঞাসা করবে (যেমন অতিরিক্ত পাসওয়ার্ড বা এর মতো কিছু) anything পৃথিবী কেবল কালো বা সাদা নয় - কমপক্ষে, এটি একটি জেব্রার মতো ... :) :)
jm666

2
@ কুপিডভোগেল লগইন করার সময় ডেমন চালানো হ'ল লঞ্চযুক্ত সমাধানের কাজ হ'ল ট্রাইস্বেবের উত্তর দেখুন। যদি আপনি একটি পাইথন ডেমন পরিচালনা করতে পারেন তবে আপনি অবশ্যই একটি প্লিস্ট কনফিগারেশন ফাইল পরিচালনা করতে পারবেন যেখানে আপনি পুনরায়
আরম্ভের

3
সবচেয়ে উত্তম হিসাবে অন্য উত্তরটি নির্দেশ করার জন্য কুডোস। এটি একটি ভাল নাগরিকত্ব ব্যাজ পাওয়া উচিত :)।
স্টাডিজিক

2
আশ্চর্যজনক উত্তর। PATH = / usr / স্থানীয় / বিন রফতানি করুন: AT পাঠ্য, স্ক্রিপ্টের শুরুতে, আপনি যদি সিস্টেম স্টার্টআপে "সুরকার গ্লোবাল আপডেট" এর মতো কমান্ড চালাতে চান।
লিওনার্দো

377

tl; dr: ওএসএক্সের নেটিভ প্রসেস লঞ্চ এবং ম্যানেজার ব্যবহার করুন, launchd

এটি করতে, একটি launchctlডিমন তৈরি করুন। স্ক্রিপ্টের সমস্ত দিকের উপর আপনার সম্পূর্ণ নিয়ন্ত্রণ থাকবে। আপনি একবার চালাতে পারেন বা ডেমন হিসাবে জীবিত রাখতে পারেন। বেশিরভাগ ক্ষেত্রেই, এই পথটিই।

  1. অ্যাপল দেব ডক্সের নির্দেশাবলী.plist অনুসারে একটি ফাইল এখানে তৈরি করুন বা নিচে আরো বিস্তারিত।
  2. ভিতরে রাখুন ~/Library/LaunchAgents
  3. লগ ইন (অথবা এর মাধ্যমে ম্যানুয়ালি চালানো launchctl load [filename.plist])

আরও তথ্যের জন্য launchd, উইকিপিডিয়া নিবন্ধটি বেশ ভাল এবং অন্যান্য পুরানো সিস্টেমগুলির তুলনায় সিস্টেম এবং এর সুবিধার বর্ণনা দেয়।


লগইনে স্ক্রিপ্ট চালানোর জন্য এখানে নির্দিষ্ট প্লিস্ট ফাইল ।

ওএসএক্স এল ক্যাপিটেন এবং আরও নতুন ( জোসে মেসিয়াস জুনিয়রকে জমা দেওয়া ) এর জন্য 2017/09/25 আপডেট হয়েছে :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
   <key>Label</key>
   <string>com.user.loginscript</string>
   <key>ProgramArguments</key>
   <array><string>/path/to/executable/script.sh</string></array>
   <key>RunAtLoad</key>
   <true/>
</dict>
</plist>

<string>আপনার পছন্দসই কমান্ডের সাথে প্রোগ্রাম কীটির পরে প্রতিস্থাপন করুন (নোটটি উল্লেখ করে যে কোনও স্ক্রিপ্ট অবশ্যই সম্পাদনযোগ্য হতে হবে: chmod a+x /path/to/executable/script.shএটি সমস্ত ব্যবহারকারীর জন্য তা নিশ্চিত করার জন্য)।

সংরক্ষণ করুন ~/Library/LaunchAgents/com.user.loginscript.plist

চালাতে launchctl load ~/Library/LaunchAgents/com.user.loginscript.plistএবং লগ আউট / পরীক্ষা করতে (বা সরাসরি পরীক্ষা করতে, চালানো launchctl start com.user.loginscript)

/var/log/system.logত্রুটি বার্তাগুলির জন্য লেজ ।

মূলটি হ'ল এটি একটি ব্যবহারকারী-নির্দিষ্ট প্রবর্তিত এন্ট্রি, সুতরাং এটি প্রদত্ত ব্যবহারকারীর জন্য লগইন চালানো হবে। সিস্টেম-নির্দিষ্ট লঞ্চ ডেমনগুলি (এতে স্থাপন করা /Library/LaunchDaemons) বুটে চালানো হয়।

আপনি যদি সমস্ত ব্যবহারকারীর জন্য লগইন চালানোর জন্য কোনও স্ক্রিপ্ট চান তবে আমি বিশ্বাস করি লগইনহুক আপনার একমাত্র বিকল্প, এবং সম্ভবত এটির কারণেই এটি বিদ্যমান।


4
হ্যাঁ. এফডব্লিউআইডাব্লু আমি একই কৌশলটিতে এই ব্লগটি সহায়ক বলে খুঁজে পেয়েছি: বিকাশকারীগুলি
ড্যানিয়েল জেমস

8
অটোমেটর ক্রিয়া সম্পর্কে সন্দেহজনক কী তা এবং আপনি কেন 'প্রস্তাবিত নয়' তা উল্লেখ করতে আপনি অবহেলা করেন।
মাইক ক্যাম্পবেল

4
: এখানে ফোল্ডার অ্যাকশন launchctl বনাম সম্পর্কে একটি ভাল ওভারভিউ apple.stackexchange.com/a/63731/38290 (শুধুমাত্র এক স্ক্রিপ্ট অনুমতি দেওয়া হয়েছে) আর LoginHook সীমাবদ্ধতা আরেকটি প্রায় এক - - superuser.com/a/377401 । এটি আসলে সন্দেহজনক বা দুর্বল পদ্ধতি নয়, তবে launchctlবেশিরভাগ ক্ষেত্রেই এটি আরও ভাল and এবং আপনার স্ক্রিপ্টটি চালানোর সমস্ত সম্ভাব্য দিকগুলির উপর আপনাকে আরও নিয়ন্ত্রণ দেয়। এটি অর্থে আরও বেশি "কেন চালু যখন কম দক্ষ পদ্ধতি ব্যবহার করবেন?" (দ্রষ্টব্য আমি এই বাক্যটি ব্যক্তিগতভাবে এগুলির জন্য প্রস্তাব করি না তা নির্দেশ করার জন্য আমি প্রথম বাক্যটি পরিবর্তন করেছি )।
ত্রিসিউব

3
ভাবছেন আপনি কীভাবে লঞ্চডেমোন প্লিস্ট তৈরি করবেন যখন ব্যবহারকারী লগ ইন করবেন প্রতিবার কী চলবে ? । সুতরাং যখন না সিস্টেম বুট কিন্তু সব যখন ব্যবহারকারী লগিং (লগ-আউট-লগইন চক্র দিয়ে চেষ্টা)। আপনি কি দয়া করে ঠিক (কেবলমাত্র ব্লে-ব্লেইন) প্রদর্শন করতে পারবেন না যে কীভাবে উপরের (আপনার দ্বারা ভুল) লঞ্চক্টেল দিয়ে স্বয়ংক্রিয় সমাধানটি প্রয়োগ করা যায়?
কাজওয়াইন

9
/ লাইব্রেরি / লঞ্চআজেন্টস / এ প্লাস্ট করা ফাইলগুলি লগ ইন করা ব্যবহারকারীর আইডি দিয়ে লগইন চলাকালীন। / লাইব্রেরি / লঞ্চডেমন / এ বুট করা ফাইলগুলি বুট করার সময় রুট হিসাবে চালানো হয় ( ব্যবহারকারী কী দিয়ে আইডি পরিবর্তন করা যেতে পারে )।
বাইন

42
  1. আপনার শেল স্ক্রিপ্টটি আপনার OME login.shহোম ফোল্ডারের মতো তৈরি করুন ।

  2. স্ক্রিপ্ট সম্পাদকটিতে নিম্নলিখিত এক-লাইন স্ক্রিপ্টটি আটকে দিন:

    "$ হোম / লগইন.শ" শেল স্ক্রিপ্ট করুন

  3. তারপরে এটি অ্যাপ্লিকেশন হিসাবে সংরক্ষণ করুন।

  4. অবশেষে আপনার লগইন আইটেমগুলিতে অ্যাপ্লিকেশনটি যুক্ত করুন।

আপনি যদি স্ক্রিপ্ট আউটপুটটিকে ভিজ্যুয়াল করতে চান তবে আপনি এর জন্য পদক্ষেপ 2 অদলবদল করতে পারেন:

tell application "Terminal"
  activate
  do script "$HOME/login.sh"
end tell

যদি একাধিক কমান্ডের প্রয়োজন হয় তবে এরকম কিছু ব্যবহার করা যেতে পারে:

tell application "Terminal"
  activate
  do script "cd $HOME"
  do script "./login.sh" in window 1
end tell

1
আমি এটিকে যুক্ত করেছি, কমান্ড লাইন ইনস্টলারটি কেবলমাত্র অনুপস্থিত;)
সোরিন

1
সুন্দর সমাধান। আমি কীভাবে "লগইন" উইন্ডোটি লুকিয়ে রাখতে পারি? আমি লগইন আইটেম টিক চিহ্ন চেষ্টা।
xgdgsc

1
@xgdgsc: Go to System Preferences -> Accounts -> Login itemsএই অ্যাপ্লিকেশনটির জন্য গোপন এবং লুকানো বাক্সটি পরীক্ষা করুন।
অনুভা

1
@ অনুভভা যেমনটি বলেছিলাম, আমি ইতিমধ্যে এই লগইন অ্যাপ্লিকেশনটির জন্য লুকানো বাক্সটি পরীক্ষা করেছি। তবে এটি এখনও উপস্থিত রয়েছে এবং কম্পিউটারটি বন্ধ করার সময় ছাড়তে বাধ্য করা প্রয়োজন।
xgdgsc

2
@ xgdgsc: ওহ ঠিক আছে, আপনি ~/Library/LaunchAgentsফোল্ডার চেক করেছেন ?
অনুভা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.