/ Etc / নেটওয়ার্ক / ইন্টারফেসে পোস্ট-আপ কমান্ড বুট করার সময় কেন একাধিকবার চলে?


10

এখানে লিখিত বিষয়বস্তু /etc/network/interfaces:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

post-up /etc/network/if-up.d/sshstart

এবং sshstartএটিতে নিম্নলিখিতগুলির সাথে একটি স্ক্রিপ্ট রয়েছে:

curl something something darkside send a file over ftps in the background &
/usr/bin/autossh -M 0 -f -N -o ServerAliveInterval=15 -o ServerAliveCountMax=3 -R 127.0.0.1:2005:127.0.0.1:22 -R 192.168.1.10:2006:192.168.2.110:1912 -L 127.0.0.1:5249:192.168.1.212:5249 username@17.16.15.2 -p 8080

যখন মেশিনটি পুনরায় চালু হয়, curlকমান্ডটি একাধিকবার কার্যকর করা হয়, ফাইলটি এফটিপি সার্ভারে 2 বা 3 বার শেষ হয় এবং আমি যখন প্রক্রিয়াগুলি দেখি তখন মনে হয় অটোশ চালানোর একাধিক উদাহরণ রয়েছে ... নিশ্চিত না যে এটি কীভাবে হয় কিনা অটোশ জিনিসগুলি করে বা না করে তবে অবশ্যই কার্ল ফাইলটি একাধিকবার আপলোড করা উচিত নয়।

আমার হান্চটি হ'ল পুরো sshstartস্ক্রিপ্টটি একাধিকবার চালানো হয়েছে তবে কেন তা বুঝতে পারছি না।

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

কেউ দয়া করে সাহায্য করতে পারেন?

ধন্যবাদ.

--- সম্পাদনা ---

প্রস্তাবিত বেলো হিসাবে আমি আমার ইন্টারফেস ফাইলটিকে অনুসরণ হিসাবে সংশোধন করেছি (পোস্ট-আপের উপরে খালি লাইনগুলি মুছে ফেলেছি):

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
post-up /etc/network/if-up.d/sshstart

এবং sshstart এ নিম্নলিখিত লাইনটি যুক্ত করেছেন:

echo $(date)>>/run/shm/sshstart.log

/run/shm/sshstart.logএকটি রিবুট পরে বিষয়বস্তু এখানে :

Wed Oct 29 08:07:00 EDT 2014
Wed Oct 29 08:07:07 EDT 2014
Wed Oct 29 08:07:07 EDT 2014
Wed Oct 29 08:07:07 EDT 2014

সুতরাং এটি 4 বার চালানো হয়েছে :( কি হচ্ছে?


1
ইঙ্গিত: লো যদি if-up.d টি সত্য হিসাবে সেট করে এবং eth0 এটিকেও সত্য হিসাবে সেট করে। প্রত্যেকটি সেট হওয়ার পরে পোস্ট-আপ চলে। আপনার স্ক্রিপ্ট উভয় নয়, শুধুমাত্র 1 ইন্টারফেস আপ উপর নির্ভর করে।
eyoung100

আমি ভেবেছিলাম এটি এমন কিছু হতে পারে, অনুমান করুন এর সময়টি আরটিএফএমের কাছে আরও কিছু দেওয়া উচিত।
TCZ8

আমি চারপাশে যাচাই করেছি এবং পোস্ট-আপ কমান্ডের জন্য কোন অ্যাডাপ্টারের নির্দিষ্ট করতে হবে তা খুঁজে পেতে পারি না, মনে হয় "স্তবজা" এর সাথে কিছু করার আছে তবে আমি ঠিক এটি পাই না don't ডেবিয়ান এবং উবুন্টু ইন্টারফেস পৃষ্ঠায় প্রচুর তথ্য রয়েছে তবে তারা সেই অংশটি বাদ দিয়েছে।
TCZ8

1
প্রশ্নের সাথে সম্পর্কিত নয়, তবে বিটিডাব্লু echo $(date)হ'ল দারুণ বিশ্রী এবং পরোক্ষ। পাশাপাশি ঠিক যে বানান date। অনুরূপ বিড়াল পুরস্কার বেহুদা ব্যবহারের
সেলেদা

Hahaha! তুমি একদম সঠিক! আমি কেন এটি করেছি তা সম্পর্কে আমার কোনও ধারণা নেই: পি
টিসিজেড 8

উত্তর:


13

ফাইলগুলি /etc/network/if-up.d ইতিমধ্যে স্বয়ংক্রিয়ভাবে চালিত হয় যখনই কোনও ইন্টারফেস (কোনও ইন্টারফেস) আসে। আপনি যখন একই স্ক্রিপ্টটি স্পষ্ট post-upকমান্ডে আবার চালানোর জন্য নির্দিষ্ট করেন, আপনি কেবল তখনই স্ক্রিপ্টটি আবার চালনার কারণ হন। সুতরাং আমার অনুমান যা ঘটেছিল তা হ'ল:

  • এটা তোলে রান একবার যখন loআপ (এনভায়রনমেন্ট ভেরিয়েবল দিয়ে আসে IFACE=lo) এ অবস্থিত হচ্ছে কারণে /etc/network/if-up.d
  • একই কারণে যখন eth0আসে (পরিবেশের পরিবর্তনশীল সহ IFACE=eth0) এটি একবার চলে ।
  • eth0(পরিবেশ পরিবর্তনশীল IFACEআনসেট সহ) এলে এটি আবার চলবে কারণ আপনি post-upনির্দেশের জন্য এটি চেয়েছিলেন ।

আমি নিশ্চিত নই যে চতুর্থ সময়টি কোথা থেকে এসেছে তবে যাইহোক এটি ইতিমধ্যে তিনটি।

আপনাকে অন্য কোনও জায়গায় স্ক্রিপ্টটি সনাক্ত করতে হবে এবং একবার post-upনির্দেশ ব্যবহার করে চালনা করতে হবে , বা এটি যেখানে রয়েছে সেখানে রেখে দিতে হবে তবে কোনও post-upনির্দেশে উল্লেখ না করে এর মান পরীক্ষা $IFACEকরতে হবে যাতে পছন্দসই ইন্টারফেস ( eth0) না আসা পর্যন্ত এটি কিছুই না করে আপ।


ওহে মন! অবশেষে! আপনি একেবারে ঠিক বলেছেন, আমি আমার লগ ফাইলে প্রতিধ্বনি to IFACE করতে sshstart এ একটি লাইন যুক্ত করেছি এবং ঠিক যেমনটি আপনি বর্ণনা করেছেন ঠিক তেমন! প্রথমবারের সময়টি হ'ল, দ্বিতীয়বারের সময়টি নীতি0, তৃতীয়বার আবার এথ0 হবে (পোস্ট-আপটি গঠন করুন) এবং চতুর্থবারের মতো এত পরিষ্কার নয় $ th চতুর্থবারের জন্য আইএফএসিএর মান: - সমস্ত আপনি কি তা জানতে পারবেন না কারে কয়? শুধু কৌতূহল দ্বারা :)
TCZ8

1
আমি সম্পর্কে জানতাম না --all। দেখে মনে হচ্ছে যে if-up.dস্ক্রিপ্টগুলি শেষবারের জন্য এই তর্কটি দিয়ে চালানোর জন্য একটি বৈশিষ্ট্য রয়েছে যে সমস্ত ইন্টারফেস এখনই শেষ হয়েছে, যদি কোনও স্ক্রিপ্ট কোনও পদক্ষেপ নিতে চায় তবে এটি জানা যায় যে আরও কোনও ইন্টারফেস মুলতুবি নেই। এটি চতুর্থবারের জন্য ব্যাখ্যা করে।
সেলেদা

এটি উপলব্ধি করা হয়েছে, আপনার সমস্ত সহায়তার জন্য ধন্যবাদ!
টিসিজেড 8

3

যেমন সেলাদা বলেছেন, /etc/network/if-up.dপ্রতিটি ইন্টারফেসের জন্য স্ক্রিপ্টগুলি চালানো হয়। নিয়মের সদৃশতা এড়াতে কেবল যুক্ত করুন:

[ "$IFACE" = "eth0" ] || exit 0

আপনার স্ক্রিপ্ট শীর্ষে। এটি ইন্টারফেসটি পছন্দসই না হলে স্ক্রিপ্টটি তত্ক্ষণাত্ প্রস্থান করবে।


1

post-up-কমান্ডের আগে খালি লাইন মুছুন । এটি কেবল post-upকমান্ডের সাথে সম্পর্কিত হবে eth0। অতিরিক্তভাবে আপনার স্ক্রিপ্টটি if-up.dফোল্ডার থেকে সরিয়ে নিন । সেই ফোল্ডারে থাকা স্ক্রিপ্টগুলি স্বয়ংক্রিয়ভাবে কার্যকর করা হয়, নির্ধারিত হিসাবে নির্বিশেষে কোনও ব্যাপার নয় post-up। আপনার ক্ষেত্রে এটি আপনার- post-upকম্যান্ডে অতিরিক্তভাবে চলবে ।


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