shell-init: error retrieving current directory: getcwd — Die üblichen Updates nicht wor
Habe ich ein einfaches Skript:
#!/bin/bash
for server in $(~/.ansible/ansible_hosts)
do
ssh $server "hostname; readlink /opt/mydir/mylink;"
done
Funktioniert es einwandfrei - das Programm gibt den korrekten Hostnamen und den link - es sei denn, ich bekomme die folgende Fehlermeldung auf einige, aber nicht alle von den Servern:
shell-init: error retrieving current directory: getcwd: cannot access parent directories: Keine solche Datei oder Verzeichnis
Alle Verzeichnisse existieren. Eine der häufigsten Anregungen war fügen Sie eine cd, eine cd oder eine cd /. Alles, was geschieht, wenn dieser Schritt Hinzugefügt wird, ist eine zusätzliche:
chdir: error retrieving current directory: getcwd: cannot access parent directories: Keine solche Datei oder Verzeichnis
Versuchte ich kickstarting der nfs-daemon auf dem off-chance, dass es gab einige Verwirrung über mein homedir und ersetzt /etc/init.d das problem war mit /opt. Kein Unterschied
Dies würde nur ein ärgernis, außer dass, wenn ich versuche, ein ansible-playbook anstelle einer einfachen ssh Befehl scheitert es für diesen server.
Alle Erkenntnisse gewürdigt würde.
- Tut
~/.ansible/ansible_hosts
enthalten eine Liste von Servern? Das ist eine seltsame Art und Weise zum Lesen der Werte, wenn so - hoffe, es ist nicht einfach eine Frage der Berechtigungen?
- Was passiert, wenn Sie manuell log-in auf diesen Maschinen?
- arco444 - Gut, die .ansible/ansible_hosts war eigentlich aus einem anderen Verzeichnis das ist, wo ich zum ersten mal das problem. Ich versuchte es mit einer hosts.txt die Datei in meinem home-Verzeichnis. Dasselbe Verhalten. Kashyap - ich habe die Erlaubnis, in mein home-Verzeichnis und die sonstigen Verzeichnisse, die ich habe versucht, diese mit. die shell-Initialisierungsdateien sind die gleichen über die ganze Umgebung, und sich manuell nicht erhöhen diese Fehler.
- der andere - ganz normalen, ereignislosen login. Weiteres symptom: ein "cd -" funktioniert von der shell, aber wenn es in dem Skript sehe ich eine "cd: OLDPWD nicht festgelegt" Fehler.
- Klingt wie es ist etwas in Ihre shell startup-Datei, die dies tut, wahrscheinlich in einem Versuch zu pflegen eine history der Verzeichnisse, oder vielleicht eine Eingabeaufforderung. Diese Dinge sollten nicht ausgeführt werden, im nicht-interaktiven Modus, so dass ich denke, dass ist die wirkliche Quelle des Fehlers.
ssh server "$SHELL -x -c true"
könnte etwas verraten, obwohl es wahrscheinlich auch ziemlich langatmig.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, der Fehler bezieht sich nicht auf das script an alle. Das Problem ist: das Verzeichnis, in dem Sie sind, wenn Sie versuchen, führen Sie das Skript nicht mehr vorhanden ist. zum Beispiel haben Sie zwei Klemmen
cd somedir/
auf die erste dannmv somedir/somewhere_else/
am zweiten, dann versuchen zu laufen, was in den ersten terminal - erhalten Sie diese Fehlermeldung.Zumindest war dies in meinem Fall.
Sie sind ausführen dies als script.. $(~/.ansible/ansible_hosts). Die $() bedeutet, dass die bash versucht, führen Sie das Skript und die Ausgabe der Ergebnisse.
Aber es ist nicht ein Skript, richtig? Es ist eine Liste von hosts!
Fügen Sie einfach das Wort
cat
und es sollte funktionieren.