【发布时间】:2015-06-06 11:05:41
【问题描述】:
我有一个简单的脚本:
#!/bin/bash
for server in $(~/.ansible/ansible_hosts)
do
ssh $server "hostname; readlink /opt/mydir/mylink;"
done
它工作正常 - 程序返回正确的主机名和链接 - 除了我在某些但不是所有服务器上收到以下错误:
shell-init:检索当前目录时出错:getcwd:无法访问父目录:没有这样的文件或目录
所有目录都存在。最常见的建议之一是添加 cd、cd - 或 cd /。添加该步骤后发生的所有事情都是额外的:
chdir:检索当前目录时出错:getcwd:无法访问父目录:没有这样的文件或目录
我尝试启动 nfs 守护程序,以防我的 homedir 存在一些混淆,并替换 /etc/init.d 以防问题出在 /opt 上。没区别
这只是一个烦恼,除了当我尝试使用 ansible playbook 而不是简单的 ssh 命令时,该服务器会失败。
任何见解都将不胜感激。
【问题讨论】:
-
~/.ansible/ansible_hosts是否包含服务器列表?如果是这样的话,那是一种读取值的奇怪方式 -
希望不是简单的权限问题?
-
在这些机器上手动登录会发生什么?
-
arco444 - .ansible/ansible_hosts 实际上来自其他人的目录,这是我第一次看到问题的地方。我在我的主目录中尝试了 hosts.txt 文件。相同的行为。 Kashyap - 我有权在我的主目录和我尝试过的其他目录中。 shell 初始化文件在整个环境中都是相同的,手动登录不会引发这些错误。
-
另一个人 - 完全正常,平安无事的登录。进一步的症状:“cd -”在 shell 中工作正常,但是当它在脚本中时,我看到“cd: OLDPWD not set”错误。
标签: linux bash shell ssh ansible