আমি কিভাবে ওএস এক্স থেকে অন্য ডেস্কটপ ব্যবহারকারীর জোর করে লগ আউট করবেন?


1

আমরা এমন পরীক্ষা চালাচ্ছি যার জন্য ম্যাক মিনিতে একাধিক ডেস্কটপ প্রয়োজন।

আমরা সফলভাবে এসএসসি টিসিপি টানেল ব্যবহার করে, 5900 থেকে 6900 তে স্থানীয় হোস্টে স্ক্রিন শেয়ারিং করার জন্য স্ক্রিন শেয়ারিংকে একই মেশিনে অন্য ব্যবহারকারীদের লগ ইন করার জন্য vnc: // user: password @ localhost: 6900 এবং ফলাফলের কথোপকথনটি চাপানোর জন্য কিছু অ্যাপপ্ল্রিপ্ট ব্যবহার করতে পারি বোতাম। আমি জাভা 1.7 এর অধীনে একটি প্রোগ্রাম চলমান ssh মাধ্যমে সফল লগইন সনাক্ত করতে পারেন export AWT_TOOLKIT=CToolkit এটি সেকেন্ড ব্যবহারকারী হিসাবে AWT উইন্ডোটি খুলতে চেষ্টা করে, যা ডেস্কটপটি চালু না হলে ব্যর্থ হয়।

এই মোটামুটি নির্ভরযোগ্য, যদিও আমি আনন্দের সাথে আরো নির্ভরযোগ্য পদ্ধতি শুনতে চাই!

যেখানে জিনিস ভুল হচ্ছে:

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

আমি বর্তমানে ব্যবহার করছি

for i in $users ; do
  ssh ${i}@localhost "osascript -e 'tell application \"System Events\"'
                                  -e 'log out'
                                  -e 'delay 3'
                                  -e 'keystroke return'
                                -e end" &
done; wait

কিন্তু মাঝে মাঝে System Events দৃশ্যত চলমান না এবং শুরু করতে অস্বীকার করে:

33:40: execution error: System Events got an error: Application isn’t running. (-600)

আমি সম্প্রতি যোগ করেছি -e 'if it is not running then launch' -e 'delay 5' অবিলম্বে আগে -e 'log out' কিন্তু যে সাহায্য করার জন্য একটি সম্পূর্ণ অনেক কাজ বলে মনে হচ্ছে না।

আমি কিছু রূপান্তর সঙ্গে সব Applescript স্টাফ প্রতিস্থাপন চিন্তা ssh kill -KILL -1 কাজ করবে - অন্তত হোল্ড আউট ব্যবহারকারীদের জন্য ব্যাক আপ হিসাবে কার System Events ভেঙ্গে গেছে - কিন্তু এটি কয়েক ডজন কোরসার্ভিস, প্রাইভেট ফ্রেমওয়ার্ক এবং ফ্রেমওয়ার্ক গুলির কয়েকটি দারুণ দশা রেখেছে যা বেশিরভাগ ক্ষেত্রেই চলতে পারেনি। kill -9 নিজে তাদের PIDs লক্ষ্য। আমি দুটি স্তরের স্ক্রিপ্ট দিয়ে বেশ কঠোরভাবে চেষ্টা করেছি, একটি ফাইলের কাছে killall-গুলি আউটপুট ধরা এবং এটি একটি দ্বিতীয় ssh অধিবেশন মধ্যে squirting।

এই ব্যবহারকারীদের লগ আউট এবং তাদের সব প্রক্রিয়া হত্যা করার জন্য আরো নির্ভরযোগ্য উপায় আছে? আমার বক্সে অ্যাডমিনিস্ট্রেটর অধিকার আছে, কিন্তু আমি ইউনিক্স কমান্ড-লাইনের উপর কিছু পছন্দ করি যাতে GUI কে ম্যানিপুলিট করতে আরও বেদনাদায়ক অ্যাপলস্ক্রিপ্ট লিখতে হয়।

ধন্যবাদ!

উত্তর:


0

আমি একটি কার্যকর রুট মত দেখায় কি, কিন্তু এটি indelicate:

ব্যবহারকারীর জন্য 'লগইন উইণ্ডো' প্রক্রিয়াটি মারুন (রুট হিসাবে - ব্যবহারকারী নিজের প্রক্রিয়া (!) খুন করতে পারে না (নোট, [এন] নিজেই রেজেক্স মিলে নিজেকে আটকায়), তারপর ধরা -9 -1 ধরুন অবশিষ্ট জগাখিচুড়ি

    $ for i in $users; do
       echo $pword |
       ssh $i@localhost '
         sudo -S kill -9 $(
           ps -axf | awk "/^ *$(id -u '$i') .*logi[n]window/{ print \$2 }"
         );
         kill -9 -1
       ';
      done

এটি প্রায় দুটি প্রসেস ছেড়ে

  • / সিস্টেম / লাইব্রেরি / ফ্রেমওয়ার্কস / কোর সার্ভারসফ্রেমওয়ার্ক / ফ্রেমওয়ার্কস / মেটাডাটা.ফ্রেমওয়ার্ক / ভার্শনস / এ / সাপোর্ট / এমডওয়ার্কার -স এমডিওয়ার্কার -সি এমডিএসআইম্পোর্টারওয়ার্কার-এম com.apple.mdworker.shared
  • / usr / sbin / cfprefsd এজেন্ট

... যা বিভিন্ন ম্যাক পেজ দাবি স্বাভাবিক ওএস এক্স weirdness দাবি।

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

Applescript রুট ব্যর্থ হলে, এবং অন্তত আমি অন্তত একটি জরুরি অবস্থা হিসাবে এটি ব্যবহার করতে পারেন kill -9 -1 অ্যাপল এর স্বাভাবিক কিন্তু অলস লগআউট প্রক্রিয়া যাই হোক না কেন প্রায় hanging পাতা আপ tidies।

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

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