স্ক্রিপ্টে আমি কীভাবে ওপেনভিপিএনকে পটভূমির মূল হিসাবে চালাতে পারি?


22

আমি একটি স্ক্রিপ্ট লিখতে চাই যা openvpnপ্রথমে কল করে , তারপরে ssh। কমান্ড টাইপ করার সময়

sudo openvpn ~/my_connection.ovpn

কমান্ড প্রম্পটে আমি নিম্নলিখিত আউটপুটটি পাই:

...
Wed Jan  4 21:04:35 2017 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
Wed Jan  4 21:04:35 2017 /sbin/ip link set dev tun0 up mtu 1500
Wed Jan  4 21:04:35 2017 /sbin/ip addr add dev tun0 local IP_FOO peer IP_FOO
Wed Jan  4 21:04:35 2017 Initialization Sequence Completed

এই কমান্ডটি অবরুদ্ধ করছে এবং শেলটি মুক্তি পাবে না। অর্ডারে একটি SSH সংযোগ পরে শুরু করার জন্য আমি টাইপ করে পটভূমি মধ্যে OpenVPN প্রক্রিয়া ধাক্কা প্রয়োজন Ctrl+ + Zএকটি দ্বারা অনুসরণ bg

তবে আমি কেবল আমার বাশ ফাইলটি কল করে ওপেনভিএনএন সংযোগ পদক্ষেপ এবং স্বয়ংক্রিয়ভাবে এসএসএস কল করতে চাই। এই ফাইলটির Ctrl+ Zএবং bgপদক্ষেপগুলি আমি কীভাবে অনুকরণ করতে পারি ?

আমি যোগ করার চেষ্টা করেছি &করার openvpnকমান্ড স্থাপন করতে nohupএটি সামনে। কোনটিই কাজ করে না।


এই ধরণের প্রশ্ন একাধিকবার জিজ্ঞাসা করা হয়েছে। আপনার যদি সাহায্যের প্রয়োজন হয় তবে আপনার স্ক্রিপ্টটি পোস্ট করা দরকার।
প্যান্থার

sudo -bকমান্ডটি এটি পটভূমিতে অনুসরণ করার জন্য ব্যবহার করুন
নিক সিলিটো

1
আমার কাছে মনে হচ্ছে এটি সত্যিই সেই প্রশ্নের সদৃশ নয় , যা চলমান ব্যাকগ্রাউন্ড প্রোগ্রামগুলিকে মূল হিসাবে আচ্ছাদিতভাবে কভার করে না এবং কীভাবে ওপেনভিপিএনকে সঠিকভাবে ডেমোনাইজ করতে হয় তা মোটেও কভার করে না।
এলিয়াহ কাগন

তারপরে আমাদের আবার শিরোনাম পরিবর্তন করা উচিত যে আমি একটি পটভূমি প্রোগ্রামটি রুট হিসাবে চালানোর চেষ্টা করেছি।
নাল

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

উত্তর:


35

টিএল; ডিআর: ব্যবহার করুন sudo -bবা, আরও ভাল ,।openvpn [...] --daemon

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

আমি সিপেনভিপিএন কমান্ডে একটি & যুক্ত করার চেষ্টা করেছি এবং এর সামনে নোপ রাখার চেষ্টা করেছি। দুটোই কাজ করে না।

আপনার আদেশ হ'ল:

sudo openvpn ~/my_connection.ovpn

sudoএর ডিফল্ট কনফিগারেশনের অধীনে , আপনি যদি সম্প্রতি sudoএকই প্রসঙ্গে (ইন্টারেক্টিভ ব্যবহারের জন্য, সাধারণত এটি একই টার্মিনালটির অর্থ) এর জন্য আপনার পাসওয়ার্ডটি প্রবেশ না করে থাকেন তবে এটি আপনার পাসওয়ার্ডের জন্য জিজ্ঞাসা করবে। তবে আপনি যদি যোগ করে পটভূমিতে কমান্ডটি চালনা করেন &তবে আপনাকে লাইনটি প্রদর্শিত হবে না বা এটি টাইপ করার সুযোগ দেওয়া হবে না।[sudo] password for user:

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

তবে এটি একমাত্র উপায় নয় এবং আপনি যেমন বলেছিলেন, আপনি কোনও স্ক্রিপ্টে এটি করতে চাইবেন না ।

উপায় 1: নিশ্চিত sudoহয়ে নিন যে একটি নতুন টাইমস্ট্যাম্প রয়েছে।

আপনি এটি নিশ্চিত করতে পারেন যে sudoএটির বর্তমান টাইমস্ট্যাম্প রয়েছে যখন এটি প্রথম চালনা করে আপনার কমান্ড চালাতে ব্যবহৃত হয়:

sudo -v

তারপরে, এর পরে, আপনি চালাতে পারেন:

sudo openvpn ~/my_connection.ovpn &

তবে আপনি যখন ব্যাকগ্রাউন্ডে কমান্ড চালাতে চান তখন সাধারণত &(এবং nohup) পুরোপুরি এড়ানো ভাল sudo। এটি বিশেষত স্ক্রিপ্টিংয়ের ক্ষেত্রে।

উপায় 2: ব্যবহার করুন sudo -bসাধারণভাবে, এটি সাধারণত আপনি চান

পরিবর্তে, আপনি sudoনিজেকে অগ্রভাগে চালাতে পারেন , তবে -bপতাকাটি পাস করুন যাতে sudoপটভূমিতে কমান্ডটি চালিত হয়।

sudo -b openvpn ~/my_connection.ovpn

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

হিসাবে man sudoব্যাখ্যা:

     -b, --background
                 Run the given command in the background.  Note that it is not
                 possible to use shell job control to manipulate background
                 processes started by sudo.  Most interactive commands will
                 fail to work properly in background mode.

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

উপায় 3: তবে এর জন্য openvpnআপনার সম্ভবত এটি চালানো উচিত --daemon

openvpnআপনি যদি --daemonবিকল্পটি দিয়ে চালনা করেন তবে পটভূমিতে স্বয়ংক্রিয়ভাবে চলবে :

sudo openvpn ~/my_connection.ovpn --daemon

পাশ --daemonআপনার পর .opvnফাইলের নাম বদলে আগে; নিম্নলিখিত যুক্তিটি --daemonযদি কোনও হয় তবে ডেমনাইজড openvpnপ্রক্রিয়াটি ব্যবহার করা উচিত এমন নাম হিসাবে ব্যাখ্যা করা হয় । ( এছাড়াও সংযোজন করবেন না& ।)

এটি উপযুক্ত কি না তা নির্ভর করে কোনও ইন্টারঅ্যাকশন openvpnচালানো হওয়ার পরে হওয়া উচিত তবে তা ডিমনাইজ করার আগেই নির্ভর করে। এবং এটি নির্ভর করে, অংশে কী সেট আপ করা হয়েছে তার উপর ~/my_connection.ovpn। তবে যদি openvpnতাৎক্ষণিকভাবে ডিমনাইজ না করা যায়, তবে তাৎক্ষণিকভাবে পটভূমিতে এটি চালানোর অন্যান্য সমস্ত উপায়ও ভেঙে যাবে

অতএব, যে কোনো পরিস্থিতি যেখানে আপনি কি জানেন আপনি চান openvpnকরতে শুরু পটভূমিতে চলমান, এবং আপনি জানি তুমি এটা ফোরগ্রাউন্ড ফিরিয়ে আনতে চাই না, আপনি জোরালোভাবে সঙ্গে এটি invoking পদ্ধতি বিবেচনা করা উচিত --daemonবিকল্প। এটি নির্দিষ্ট - openvpnসর্বাধিক প্রোগ্রামগুলি কোনও --daemonবিকল্প সমর্থন করে না , যদিও অনেকগুলি সার্ভার প্রোগ্রামে এই জাতীয় কিছু বিকল্প থাকে। (তবে নাম এবং বাক্য গঠন আলাদা হয়))

সিদ্ধান্ত নেন কিনা বা না এই অপশনটি ব্যবহার করার (এবং আপনি কিভাবে এটা ব্যবহার করতে চান), আমি সুপারিশ আপনি পড়তে ম্যানুয়েল পৃষ্ঠা , বিশেষ করে উপর বিভাগে । এটিতে অনেক দরকারী তথ্য রয়েছে এবং আমি এখানে প্রথম অনুচ্ছেদটি উদ্ধৃত করছি:openvpn--daemon

       --daemon [progname]
              Become  a  daemon  after  all   initialization   functions   are
              completed.   This option will cause all message and error output
              to be sent to  the  syslog  file  (such  as  /var/log/messages),
              except  for  the  output of scripts and ifconfig commands, which
              will go to /dev/null unless otherwise  redirected.   The  syslog
              redirection  occurs  immediately  at  the point that --daemon is
              parsed on the command line even though the  daemonization  point
              occurs  later.   If one of the --log options is present, it will
              supercede syslog redirection.

              The optional progname parameter [...]

উপায় 4 : কখনও কখনও সম্পূর্ণ স্ক্রিপ্টটি রুট হিসাবে চালানো যুক্তিসঙ্গত।

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

যদি এটি হয় sudoতবে স্ক্রিপ্টের আদেশগুলি থেকে আপনার সরিয়ে নেওয়া উচিত । স্ক্রিপ্টটি যখন রুট হিসাবে চালিত হয় তখন কোনও প্রয়োজন নেই sudo। (যদিও রুট ব্যবহারকারী করতে পারেন ডিফল্টরূপে, কোনো ব্যবহারকারী হিসাবে কোনো কমান্ড নিজেই সহ চালানো sudoএবং তা করার একটি পাসওয়ার্ড প্রয়োজন হবে না। তাই আপনি যদি না এর ছুটি দৃষ্টান্ত sudoলিপিতে তারপর এটা করবে সম্ভবত এখনও কাজে।)

sudoস্ক্রিপ্টে যদি আপনার কাছে এমন কোনও দৃষ্টান্ত থাকে যা প্রকৃতপক্ষে রুট (সহ ) ব্যতীত অন্য কোনও ব্যবহারকারী হিসাবে কমান্ড চালাতে ব্যবহৃত হয় , তবে আপনার এখনও সেই দৃষ্টান্তগুলি রাখা উচিত ।-u user

যদি পুরো স্ক্রিপ্টটি রুট হিসাবে চলমান থাকে, তবে পটভূমিতে চালিত কমান্ডগুলি তৈরি করার বেশিরভাগ সাধারণ পদ্ধতি প্রয়োগ করা &এবং যেখানে প্রয়োজন হয় সেখানে ব্যবহার করা হয় nohup(যা আপনি ইতিমধ্যে জানেন)। এই জন্য, যদিও, আপনি এখনও দৃ openvpnwith ়ভাবে --daemonবিকল্পটি ব্যবহার করে বিবেচনা করা উচিত ।


একটি দুর্দান্ত উপায় এবং চিন্তাশীল উত্তর। সাবাশ.
বৃহস্পতিবার

2

টিএল; ডিআর এটিকে ডিমন মোডে চালান:openvpn --config Windscribe-Japan.ovpn --daemon

openvpnকমান্ডের কনফিগারেশন (.ovpn) ফাইলের নামটি কেবলমাত্র যদি অন্য কোনও বিকল্প নির্দিষ্ট না করা থাকে তবে কাজ করে। যদি আমি --daemonবিকল্পটি নির্দিষ্ট করি তবে ওপেনভিপিএন একটি বিকল্প প্যারামিটার হিসাবে ফাইলের নামটি পার্স করার চেষ্টা করে এবং বিকল্প ত্রুটি ছুঁড়ে ফেলেছে: আমি "উইন্ডসক্রাইব.ও.পি.পি" কে একটি - ওপশন প্যারামিটার হিসাবে পার্স করার চেষ্টা করছি তবে আমি কোনও শীর্ষস্থানীয় '-' দেখতে পাচ্ছি না

উত্তর:

এটি এড়াতে, ফাইলের নামটি --configবিকল্পের সাথে নির্দিষ্ট করতে হবে । উদাহরণস্বরূপ openvpn --config Windscribe.ovpn --daemon,। তারপরে tail -f /var/log/syslogআরও পরিদর্শন করার জন্য সিসলগের সাথে লেজ দিন ।

curl ifconfig.coভিপিএন সংযুক্ত আছে কিনা তা নিশ্চিত করতে আপনি এই কার্ল কমান্ডের আউটপুট আগে ও পরেও পরীক্ষা করতে পারেন।

দ্রষ্টব্য: এসএসএইচ অধিবেশন থেকে লগআউট করার পরেও এটি ডিমন চালিয়ে যাবে।


0

আপনি কেবল আপনার অনুলিপি করতে পারেন

.conf ফাইলটি / etc / openvpn / এ

তারপরে আপনার জন্য সমস্ত ডিমনাইজিং এবং সুডো পরিচালনা করতে 'পরিষেবা ওপেনভিপিএন @ কনফনাম স্টার্ট' জিজ্ঞাসা করুন।

Https://unix.stackexchange.com/a/366680/198666 দেখুন

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