Ich bin ratlos. Ich habe ein Skript in meinem /home
Verzeichnis, das ausführbar ist:
[user@server ~]$ ll
total 4
-rwx------ 1 user user 2608 Jul 15 18:23 qa.sh
Wenn ich jedoch versuche, es damit auszuführen, kann sudo
es es nicht finden:
[user@server ~]$ sudo ./qa.sh
[sudo] password for user:
sudo: unable to execute ./qa.sh: No such file or directory
Dies ist ein neuer Build. Es wurden keine Änderungen vorgenommen, die Probleme verursachen würden. Tatsächlich besteht der Zweck des Skripts darin, sicherzustellen, dass es tatsächlich gemäß unseren Richtlinien erstellt wird. Vielleicht ist es das nicht und sudo
wird tatsächlich während des Builds kaputt gemacht?
Ich sollte auch beachten, dass ich sudo
mit anderen Befehlen in anderen Verzeichnissen ausführen kann .
EDIT: Das Drehbuch (Ich habe es nicht geschrieben, also überlege es /bin/bash
mir nicht , 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
bash
shell-script
executable
theillien
quelle
quelle
sh qa.sh
anstelle von./qa.sh
Antworten:
Dies geschieht normalerweise, wenn die
#!
Zeile shebang ( ) in Ihrem Skript unterbrochen ist.Der Shebang teilt dem Kernel mit, dass die Datei mithilfe eines Interpreters ausgeführt werden muss. Wenn
sudo
die Meldung ohne ausgeführt wird , ist sie etwas aussagekräftiger. Aber mitsudo
Ihnen bekommen Sie die Nachricht, die Sie haben.Beispielsweise:
Die
bad interpreter
Nachricht zeigt deutlich, dass der Schebang fehlerhaft ist.quelle
^M
Zeichen und der Dolmetscher las es als Teil der Shebang-Linie. Ich habe es durchgearbeitetdos2unix
und es richtig gemacht. Vielen Dank ~Ich hatte gerade genau dieses Problem, es stellte sich heraus, dass es sich um ein Textdatei-Codierungsproblem handelte. Damit ich das Problem beheben konnte, während Xubuntu 14.04.3 LTS ausgeführt wurde, installierte ich dos2unix und konvertierte die Kodierung des Skripts. Anschließend führte ich das Skript erneut mit sudo aus und es funktionierte einwandfrei. Unten finden Sie ein Beispiel:
quelle
No such file or directory
Fehler ausgeführt werden.