sudo: ./script.sh কার্যকর করতে অক্ষম: এই জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই


27

আমি স্টম্পড। আমার /homeডিরেক্টরিতে আমার একটি স্ক্রিপ্ট রয়েছে যা কার্যকর হয়:

[user@server ~]$ ll
total 4
-rwx------ 1 user user 2608 Jul 15 18:23 qa.sh

তবে, যখন আমি এটির সাথে sudoএটি চালানোর চেষ্টা করি তখন বলে যে এটি এটি খুঁজে পাবে না:

[user@server ~]$ sudo ./qa.sh 
[sudo] password for user: 
sudo: unable to execute ./qa.sh: No such file or directory

এটি একটি নতুন বিল্ড হয়। এমন কোনও পরিবর্তন করা হয়নি যা সমস্যার সৃষ্টি করবে। প্রকৃতপক্ষে, স্ক্রিপ্টের মূল বিষয়টি হ'ল এটি আমাদের নীতি অনুসারে নির্মিত হয়েছে তা নিশ্চিত করা built সম্ভবত sudoএটি নির্মাণের সময় না হয়ে আসলে ভেঙে যাচ্ছে?

আমার আরও খেয়াল করা উচিত যে আমি sudoঅন্যান্য ডিরেক্টরিতে অন্যান্য কমান্ড দিয়ে চালাতে পারি ।

সম্পাদনা: স্ক্রিপ্ট (আমি এটি লিখিনি তাই /bin/bashএটির উপর আমাকে দেবেন না, দয়া করে;))

#! /bin/bash

. /root/.bash_profile

customer=$1

if [ -z "$customer" ]; then

        echo "Customer not provided. Exiting..."
        exit 1

fi

space ()
{
echo
echo '###########################################################################'
echo '###########################################################################'
echo '###########################################################################'
echo
}

g=/bin/egrep

$g ^Listen /etc/ssh/sshd_config
$g ^PermitR /etc/ssh/sshd_config
$g ^LogL /etc/ssh/sshd_config
$g ^PubkeyA /etc/ssh/sshd_config
$g ^HostbasedA /etc/ssh/sshd_config
$g ^IgnoreR /etc/ssh/sshd_config
$g ^PermitE /etc/ssh/sshd_config
$g ^ClientA /etc/ssh/sshd_config

space

$g 'snyder|rsch|bream|shud|mweb|dam|kng|cdu|dpr|aro|pvya' /etc/passwd ; echo ; echo ; $g 'snyder|rsch|bream|shud|mweb|dam|kng|cdu|dpr|aro|pvya' /etc/shadow

space

$g 'dsu|scan' /etc/passwd ; echo ; echo ; $g 'dsu|scan' /etc/shadow

space

$g ${customer}admin /etc/passwd

space

chage -l ${customer}admin

space

$g 'urs|cust|dsu' /etc/sudoers

space

$g dsu /etc/security/access.conf

space

$g account /etc/pam.d/login

space

/sbin/ifconfig -a | $g addr | $g -v inet6

space

echo "10.153.156.0|10.153.174.160|10.120.80.0|10.152.80.0|10.153.193.0|172.18.1.0|10.153.173.0"
echo
$g '10.153.156.0|10.153.174.160|10.120.80.0|10.152.80.0|10.153.193.0|172.18.1.0|10.153.173.0' /etc/sysconfig/network-scripts/route-eth1

space

cat /etc/sysconfig/network-scripts/route-eth2

space

netstat -rn | tail -1

space

cat /etc/sysconfig/iptables

space

cat /etc/hosts

space

##file /usr/local/groundwork ; echo ; echo ; /sbin/service gdma status

##space

cat /etc/resolv.conf

space

HOSTNAME=`echo $HOSTNAME | awk -F. '{ print $1 }'`

nslookup ${HOSTNAME}

echo
echo

nslookup ${HOSTNAME}-mgt

echo
echo

nslookup ${HOSTNAME}-bkp

space

/sbin/service rhnsd status ; echo ; echo ; /sbin/chkconfig --list rhnsd ; echo ; echo ; yum update --security

space

/sbin/service osad status ; echo ; echo ; /sbin/chkconfig --list osad

space

/sbin/service sshd status ; echo ; echo ; /sbin/chkconfig --list sshd

space

/sbin/service snmpd status ; echo ; echo ; /sbin/chkconfig --list snmpd ; echo ; echo ; echo ; cat /etc/snmp/snmpd.conf

space

df -h

space

cat /proc/cpuinfo | $g ^processor

space

free -g

space

if [ -f /etc/rsyslog.conf ]; then

        tail -3 /etc/rsyslog.conf

else

        echo "This system is not running rsyslog."

fi

rm -f $0

3
sh qa.shপরিবর্তে ব্যবহার করার চেষ্টা করুন./qa.sh
নেটওয়ার্কার

@ নেট ওয়ার্কার এই ফর্ম্যাটটি ব্যবহার করার সময় আচরণে কোনও পরিবর্তন হবে না।
theillien

উত্তর:


28

#!আপনার স্ক্রিপ্টের শেবাং ( ) লাইনটি নষ্ট হয়ে গেলে এটি সাধারণত ঘটে ।

শেবাং হ'ল কর্নেলটিকে ফাইলটি অনুবাদক ব্যবহার করে কার্যকর করতে হবে। বাইরে চালানো হলে sudo, বার্তাটি আরও কিছুটা অর্থবহ। তবে আপনার সাথে sudoযে বার্তাটি পেয়েছেন তা পেয়ে যান।

উদাহরণ স্বরূপ:

$ cat test.sh
#!/bin/foo
echo bar

$ ./test.sh
bash: ./test.sh: /bin/foo: bad interpreter: No such file or directory

$ bash test.sh
bar

$ sudo ./test.sh
sudo: unable to execute ./test.sh: No such file or directory

$ sudo bash ./test.sh
bar

bad interpreterবার্তা পরিষ্কারভাবে নির্দেশ করে যে এটা কুঁড়েঘর যা ত্রুটিপূর্ণ আছে।


11
এই বিষয়টি ছিল। সেখানে লুকানো ^Mঅক্ষর ছিল এবং দোভাষী সেটিকে শেবাং লাইনের অংশ হিসাবে পড়ছিলেন। আমি এটিকে দৌড়েছি dos2unixএবং এটি ঠিক শেষ করেছে। ধন্যবাদ ~
থিলিয়ান

1
আপনি কোন সম্পাদক ব্যবহার করছেন?
ctrl-alt-delor

5
আমার ক্ষেত্রে, লাইন এন্ডিংটি ভুল হিসাবে সেট করা হয়েছিল, উইন্ডোজের জন্য সিআর-এলএফ, লিনাক্সের জন্য এলএফ হওয়া উচিত। এটি খুঁজে পাওয়ার আগে কিছুটা সময় নিতে পারে।
রল্ফব্লাই

11

আমার ঠিক এই সমস্যাটি ছিল, এটি একটি পাঠ্য ফাইল এনকোডিংয়ের সমস্যা হিসাবে পরিণত হয়েছিল। আমার জুবুন্টু 14.04.3 এলটিএস চালানোর সময় এটি ঠিক করার জন্য, আমি ডস 2 ইউনিক্স ইনস্টল করেছি এবং স্ক্রিপ্টটির এনকোডিং রূপান্তর করেছি এবং তারপরে সুদো ব্যবহার করে আবার স্ক্রিপ্টটি চালিয়েছি এবং এটি দুর্দান্ত কাজ করেছে। আপনি নীচে একটি উদাহরণ খুঁজে পেতে পারেন:

sudo apt-get install dos2unix -y
dos2unix test.sh
sudo chmod u+x test.sh && sudo ./test.sh

এটি যখন কাজ করে তখন বুঝতে হবে যে লাইন শেষের অক্ষরগুলির ব্যাখ্যাটি ফাইলের শেবাং দ্বারা আকারযুক্ত। সুতরাং এটি সমস্যার সমাধান করতে পারে তবে শিবাং পরিবর্তন করতে পারে।
এরিক

উইন্ডোজের এটম সম্পাদক নিয়ে আমার এই সমস্যা ছিল। ডিফল্ট লাইনটি শেষ হচ্ছিল সিআরএলএফ। তবে আপনি সেটিংস> প্যাকেজগুলি> লাইন সমাপ্তি নির্বাচকের কাছে গেলে আপনি এলএফ-তে শেষ হওয়া ডিফল্ট লাইনটি পরিবর্তন করতে পারেন। তারপরে আপনি যখন লিনাক্সে বাশ স্ক্রিপ্টটি উইনসিসিপি করেন তখন এটি বিভ্রান্তিকর No such file or directoryত্রুটি ছাড়াই কার্যকর করা উচিত ।
snark
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.