web-dev-qa-db-fra.com

sudo: impossible d'exécuter ./script.sh: aucun fichier ou répertoire de ce type

Je suis perplexe. J'ai un script dans mon /home répertoire exécutable:

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

Cependant, lorsque j'essaie de l'exécuter avec Sudo, il dit qu'il ne peut pas le trouver:

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

C'est sur une nouvelle construction. Aucune modification n'a été apportée qui pourrait causer des problèmes. En fait, le but du script est de s'assurer qu'il est réellement construit selon nos politiques. Peut-être que ce n'est pas le cas et que Sudo est réellement cassé pendant la construction?

Je dois également noter que je peux exécuter Sudo avec d'autres commandes dans d'autres répertoires.

EDIT: Le script (je ne l'ai pas écrit donc ne pas /bin/bash moi dessus, s'il vous plaît;))

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

Cela se produit généralement lorsque le Shebang (#!) la ligne de votre script est rompue.

Le Shebang est ce qui indique au noyau que le fichier doit être exécuté à l'aide d'un interpréteur. Lorsqu'il est exécuté sans Sudo, le message est un peu plus significatif. Mais avec Sudo vous obtenez le message que vous avez reçu.

Par exemple:

$ 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

Le bad interpreter le message indique clairement que c'est le Shebang qui est défectueux.

28
Patrick

Je viens d'avoir ce problème exact, il s'est avéré être un problème d'encodage de fichier texte. Pour que je le corrige lors de l'exécution de Xubuntu 14.04.3 LTS, j'ai installé dos2unix et converti l'encodage du script, puis exécuté à nouveau le script à l'aide de Sudo et cela a bien fonctionné. Vous pouvez trouver un exemple ci-dessous:

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