আমি কি একটি নির্দিষ্ট ডিরেক্টরিতে এসএসএইচ করতে পারি?


9

আমি প্রতিদিন বিভিন্ন সার্ভারের একটি ভিড়ের মধ্যে এসএসএইচ করি এবং তাদের কিছুগুলির কাছে তাদের ওয়েবসাইটগুলির জন্য বিভিন্ন ফাইল সিস্টেম কাঠামো রয়েছে। প্রতিবার আমি যখন সার্ভার পরিবর্তন করি তখন আমাকে যেখানে কাজ করতে হবে সেগুলিতে আমাকে কাজ করতে হবে (কারণ এটি খুব কমই আমি থাকতে চাই ~)।

আমি আমার সমস্ত ক্রিয়াকলাপগুলিকে স্বয়ংক্রিয় করতে ফ্যাব্রিক ফাইলগুলি ব্যবহার করি (গিটকে ধাক্কা দিয়ে, গিট থেকে টানতে সার্ভারে স্বয়ংক্রিয় এসএসএইচ, ওয়েব অ্যাপ্লিকেশনটি পুনরায় চালু করা, নির্ভরতা পরিবর্তন করা ইত্যাদি) তাই আমি ভাবছিলাম যে আমি এটিও বলতে চাই না যে আমি চাই এসএসএইচকে সঠিক ডিরেক্টরিতে প্রবেশ করুন যাতে আমি চালাতে পারি fab sshএবং একটি সাধারণ এসএসএইচ অধিবেশন হতে পারি, ঠিক সঠিক জায়গায় এবং অবিলম্বে কাজ শুরু করতে পারি।

এটি যদিও ফ্যাব্রিক সম্পর্কে নয়; দয়া করে এটি উপেক্ষা করুন। ফ্যাব্রিক কেবল কমান্ডগুলির একটি ব্যাচ চালাচ্ছে। আমার যুক্তি sshআদেশের সাথে আছে। এটাই আমি ফ্যাব্রিককে চালাতে বলছি।

সুতরাং কিভাবে আমি পেতে পারেন sshকরতে cdপ্রবেশ করুন একটি নির্দিষ্ট ডিরেক্টরির মধ্যে?

দ্রষ্টব্য: এটি কোনও সার্ভার বা ব্যবহারকারী-ব্যাপী জিনিস হতে পারে না । কিছু সার্ভারে এক ব্যবহারকারীর অধীনে আমার একাধিক ওয়েবসাইট রয়েছে যাতে কিছু স্টিক ~/.bashrcকরা আমার পক্ষে কাজ করে না।

উত্তর:


9

আমি জানতাম লগইনে আমি কিছু চালাতে পারি, তবে আমি জানতাম এটি চলার পরে সরাসরি বেরিয়ে আসবে। আমার এখন যা মনে আছে তা হ'ল আমি রিমোট সার্ভারে আমার পছন্দ মতো চালাতে পারি। আপনি কেবল একসাথে আদেশগুলি চেইন করতে পারেন!

ssh user@server -t "cd /websites/website ; /bin/bash"

এখন আমি কেবল ফ্যাব্রিককে এটি করতে বলতে পারি এবং আমরা দূরে আছি। সহজ।


আমি বলেছিলাম ফ্যাব্রিকের সাথে এটি করার কিছুই ছিল না তবে উপরের ভিত্তিতে আমার ফ্যাব্রিক স্ক্রিপ্টের নতুন অংশটি এখানে রয়েছে:

def ssh():
    ''' SSH into the remote server at the correct directory '''
    local('ssh -t -p%(port)s %(server)s "cd %(remote_dir)s ; /bin/bash"' % {
        'server': server_host,
        'port': server_port,
        'remote_dir': remote_dir,
    })

আমি তাই ভেরিয়েবল প্রায় একই স্ক্রিপ্টের সিমবলিক লিঙ্ক ( server_host, server_portএবং remote_dir) সাইট থেকে সাইট থেকে পরিবর্তন।

যেহেতু ফ্যাব্রিক আউটবাউন্ড সংযোগ পরিচালনা করতে পারে আপনি কেবল এটি করতে পারেন:

def ssh():
    ''' SSH into the remote server at the correct directory '''
    run('cd %s ; /bin/bash' % remote_dir)

এটি কাজ করে তবে ফ্যাব্রিক থেকে স্ট্রিং দিয়ে আউটপুট চাপানো হয়। এটি ৮০ টিরও বেশি চিঠি প্রম্পট তৈরি করেছে এবং আমার কাছে প্রচুর রেজোলিউশন পেয়েছে, এটি আমার পক্ষে অনেক বেশি :)

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