পাসওয়ার্ডে স্ক্রিপ্ট এবং বিশেষ অক্ষরগুলি থেকে মুক্ত হওয়া Bash


10

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

!/bin/sh
/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p#8111*@uu( my_database |  gzip -c >  my_database.sql.gz

এখন কথা হ'ল এই পাসওয়ার্ডে সব ধরণের বিশেষ চরিত্র রয়েছে: #8111*@uu(

আমি যদি উপরে কমান্ডের উপরে সরাসরি চালিত করি তবে একক উদ্ধৃতিতে পাসওয়ার্ড ব্যবহার করা উচিত তবে এটি কাজ করে: যেমন।

/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p'#8111*@uu(' my_database |  gzip -c >  my_database.sql.gz

একক উদ্ধৃতি ব্যতীত আমি শেষ (') এর জন্য ত্রুটি পেয়েছি।

আমি পাসওয়ার্ডে অক্ষরগুলি এড়িয়ে যাওয়ার চেষ্টা করেছি:

!/bin/sh
/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p'\#8111\*\@uu(' my_database |  gzip -c >  my_database.sql.gz

তারপরে এটি অ্যাক্সেস অস্বীকার ত্রুটি দেয়।

আমি "উত্স" অর্থাত্ ব্যবহার করার চেষ্টা করেছি। অন্য ফাইলটিতে পাসওয়ার্ড সংরক্ষণ করা:

ফাইল পাস

MYPASSWORD='#8111*@uu('

তারপরে বাশ স্ক্রিপ্টে সেই ফাইলটি অন্তর্ভুক্ত করুন:

!/bin/sh
source pass.cre
/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p$MYPASSWORD my_database |  gzip -c >  my_database.sql.gz

এটি ফাইল থেকে Y MYPASSWORD পড়ার পরে আবার অবৈধ চরিত্রের ত্রুটি বলে মনে হচ্ছে।

কোন পরামর্শ আমি কী মিস করছি?

উত্তর:


8

দুবার ডাবল কোট ব্যবহার করুন, পালিয়ে গিয়ে পালাতে পারেননি: -p"\"$MYPASSWORD\""

#!/bin/sh
source pass.cre
/usr/bin/ssh -p 91899 user@remoteHost 'mysqldump -u db_user -p"\"$MYPASSWORD\"" my_database |  gzip -c >  my_database.sql.gz'

বা অন্য সংস্করণ

/usr/bin/ssh -p 91899 user@remoteHost "mysqldump -u db_user -p\"'io#bc@14@9$#jf7AZlk99'\" my_database | gzip -c > my_database.sql.gz"

উদাহরণ

% source pass.cre
% ssh user@host mysqldump -u root -p$MYPASSWORD    
user@host's password: 
zsh:1: bad pattern: -p#8111*@uu(

% source pass.cre
% ssh user@host mysqldump -u root -p"$MYPASSWORD"   
user@host's password: 
zsh:1: bad pattern: -p#8111*@uu(

% source pass.cre
% ssh user@host mysqldump -u root -p"\"$MYPASSWORD\""
user@host's password: 
Warning: Using a password on the command line interface can be insecure.

ধন্যবাদ @ মিউহ এবং এবি, এটি অবশ্যই বোধগম্য এবং আমি এটি পরীক্ষা করেছি, এটির কার্যকারীতা। আমাকে সঠিক দিকে নির্দেশ করার জন্য ধন্যবাদ ছেলেরা।
সহিহব

কিছুটা সমস্যা আছে বলে মনে হচ্ছে, আমার কাছে এর মতো পাসওয়ার্ড রয়েছে: io#bc@14@9$#jf7AZlk99 রিমোটের জন্য, এটি কাজ করছে না অর্থাৎ। /usr/bin/ssh -p 91899 user@remoteHost "mysqldump -u db_user -p'io#bc@14@9$#jf7AZlk99' my_database | gzip -c > my_database.sql.gz" আমি এখানে পরামর্শ হিসাবে পালানোর চেষ্টা করেছি। এটি দু'বার কার্যকর করা হয়েছে তা মনে রেখেই তবে আমি মনে করি যখন এসএসএইচ এর মাধ্যমে রিমোট সার্ভারে কমান্ড প্রেরণ করা হচ্ছে তখন বিষয়গুলি সামান্য পরিবর্তিত হবে বলে মনে হচ্ছে।
সহিব

ব্যবহার/usr/bin/ssh -p 91899 user@remoteHost "mysqldump -u db_user -p\"'io#bc@14@9$#jf7AZlk99'\" my_database | gzip -c > my_database.sql.gz"
এবি

@ রিক_আইআরএস আমার উত্তরটিতে আমার সম্পাদনাটি দেখুন কারণ আপনার সমস্যা রয়েছে $#এবং সর্বত্র একক উদ্ধৃতি প্রয়োজন।
meuh

3

সমস্যাটি হ'ল আপনার স্ট্রিং দু'বার ব্যাখ্যা করা হচ্ছে, একবার স্থানীয় শেল এবং আবার রিমোট শেল যা আপনার sshজন্য চলছে। সুতরাং এগুলির দুটি ব্যবহার করে আপনার দুবার উদ্ধৃতি দেওয়া দরকার:

-p\''#8111*@uu('\'
-p"'#8111*@uu('"

সম্পাদনা: আপনি যদি ""পুরো কমান্ডটি ডাবল-কোট করতে চলেছেন তবে পাসওয়ার্ডগুলি ধারণ করে আপনার সমস্যা হবে $। এটি এড়াতে আপনার কমান্ডটি একক-উদ্ধৃতি করা দরকার। -pএটির দ্বিগুণ ব্যাখ্যা করার পরেও আপনার এখনও মানটির একক উদ্ধৃতি প্রয়োজন । সুতরাং আপনার একক উদ্ধৃতিগুলির মধ্যে একক উদ্ধৃতি প্রয়োজন।

এটি উদাহরণ হিসাবে যেমন একটি একক উদ্ধৃতি ( \') ব্যবহার করে সম্পন্ন করা হয় :

'I don'\''t like java'

আপনি স্ট্রিং দেবে I don't like java। সুতরাং আপনার দ্বিগুণ-উদ্ধৃত উদাহরণটি একক-উদ্ধৃত হয়ে যায়:

/usr/bin/ssh -p 91899 user@remoteHost 'mysqldump -u db_user -p'\''io#bc@14@9$#jf7AZlk99'\''my_database | gzip -c > my_database.sql.gz'

আপনি কি শুধু এটি পছন্দ করেন না?

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