it-swarm.com.de

sudo: ./script.sh kann nicht ausgeführt werden: keine solche Datei oder kein solches Verzeichnis

Ich bin ratlos. Ich habe ein Skript in meinem /home Verzeichnis, das ausführbar ist:

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

Wenn ich jedoch versuche, es mit Sudo auszuführen, heißt es, dass es nicht gefunden werden kann:

[[email protected] ~]$ Sudo ./qa.sh 
[Sudo] password for user: 
Sudo: unable to execute ./qa.sh: No such file or directory

Dies ist auf einem neuen Build. Es wurden keine Änderungen vorgenommen, die Probleme verursachen würden. In der Tat besteht der Zweck des Skripts darin, sicherzustellen, dass es tatsächlich gemäß unseren Richtlinien erstellt wird. Vielleicht ist es das nicht und Sudo wird während des Builds tatsächlich beschädigt?

Ich sollte auch beachten, dass ich Sudo mit anderen Befehlen in anderen Verzeichnissen ausführen kann.

EDIT: Das Skript (ich habe es nicht geschrieben, also nicht /bin/bash ich drüber, bitte;))

#! /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
27
theillien

Dies passiert normalerweise, wenn der Shebang (#!) Zeile in Ihrem Skript ist unterbrochen.

Der Shebang teilt dem Kernel mit, dass die Datei mit einem Interpreter ausgeführt werden muss. Bei Ausführung ohne Sudo ist die Nachricht etwas aussagekräftiger. Aber mit Sudo erhalten Sie die Nachricht, die Sie erhalten haben.

Zum Beispiel:

$ 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

Das bad interpreter Meldung zeigt deutlich an, dass der Shebang fehlerhaft ist.

28
Patrick

Ich hatte gerade genau dieses Problem, es stellte sich heraus, dass es sich um ein Problem mit der Codierung von Textdateien handelte. Damit ich es während der Ausführung von Xubuntu 14.04.3 LTS beheben konnte, installierte ich dos2unix und konvertierte die Codierung des Skripts. Anschließend führte ich das Skript erneut mit Sudo aus und es funktionierte einwandfrei. Ein Beispiel finden Sie unten:

Sudo apt-get install dos2unix -y
dos2unix test.sh
Sudo chmod u+x test.sh && Sudo ./test.sh
12
Tom B