subprocess.Popen возвращает «shell-init: ошибка при получении текущего каталога» - PullRequest
0 голосов
/ 20 апреля 2020

Я создал простую обратную оболочку в python, используя subprocess.Popen(cmd, shell=True) для запуска команд клиентом. Однако, когда я использую команды в каталоге пользователя, я получаю сообщение об ошибке shell-init. Это то, что я получаю, когда пытаюсь использовать ls

shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
ls: .: Operation not permitted

Выполнение команды ls, так как sudo не работает.

Стоит отметить, что команды работают должным образом в каталогах вне пользовательского каталога.

Вот код, вызывающий команду:

output = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

1 Ответ

0 голосов
/ 20 апреля 2020

Из китайского блога

[root@smart hello]# cat /root/Desktop/hello.sh 
#!/bin/bash
echo "hello"
[root@smart hello]# /root/Desktop/hello.sh
shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
hello
[root@smart hello]# cd /
[root@smart /]# /root/Desktop/hello.sh
hello
[root@smart /]# 

В нем говорится, что если вы удалите первую строку скрипта, он тоже отлично работает.

[root@smart hello]# cat /root/Desktop/hello.sh 
echo "hello"
[root@smart hello]# /root/Desktop/hello.sh
hello

Если это верно и для вас. Тогда это не проблема с подпроцессом.

...