Tod*_*ner 19 linux ssh bash shell ansible
我有一个简单的脚本:
#!/bin/bash
for server in $(~/.ansible/ansible_hosts)
do
ssh $server "hostname; readlink /opt/mydir/mylink;"
done
Run Code Online (Sandbox Code Playgroud)
它工作正常 - 程序返回正确的主机名和链接 - 除了我在一些但不是所有服务器上收到以下错误:
shell-init:检索当前目录时出错:getcwd:无法访问父目录:没有这样的文件或目录
所有目录都存在.最常见的建议之一是添加cd,cd - 或cd /.添加该步骤时发生的所有情况都是额外的:
chdir:检索当前目录时出错:getcwd:无法访问父目录:没有这样的文件或目录
我尝试启动nfs守护进程,因为我的homedir存在一些混乱,并且如果问题是/ opt,则替换/etc/init.d.没有不同
这只会是一个烦恼,除了当我尝试使用ansible playbook而不是简单的ssh命令时,它对于该服务器来说是失败的.
任何见解都会受到赞赏.
Put*_*nik 47
我认为错误根本与脚本无关.问题是:当您尝试运行脚本时,您所在的目录不再存在.例如,您有两个终端,cd somedir/
在第一个终端然后mv somedir/ somewhere_else/
在第二个终端,然后尝试在第一个终端中运行 - 您将收到此错误消息.
至少这是我的情况.
根据这个答案,当“你重新创建目录”但在这个位置已经有一个shell时会发生这种情况,所以我们可以简单地运行:
cd ~ && cd -
Run Code Online (Sandbox Code Playgroud)