Команда работает нормально, но дает сбой при удаленном выполнении через ssh

Существует множество методов, вот некоторые:

  • Используйте sudoпо специальному -способу. Это могут использовать администраторы (, имеющие полные sudoпривилегии ).
  • Настройте /etc/sudoers, чтобы разрешить выполнение определенных сценариев какsudo(без пароля или любым пользователем ).
  • Если все, что вы хотите сделать, это привязать к портам -с низким -номером, используйте authbind.
  • Пишите на другом языке, который компилируется в статически связанный исполняемый файл. go, довольно хорош, так как прост -в использовании.
  • Напишите программу запуска для выполнения привилегированных вещей и сбросьте привилегии, прежде чем execсоздать новый процесс для запуска скрипта.
0
02.10.2020, 09:19
2 ответа

К сожалению, я не знаком с ansible, но, поскольку кажется, что ansibleприсутствует в смеси, и проблема в том, что другой процесс переводит команду таким образом, что нарушает цитирование, возможно, исключая цитирование в этом часть команды может помочь.

Возможно, стоит попробовать базовую команду вроде этой:

ls -ltr /tmp/*.pid  | grep "$(date +%b\ %e)"

Остается вопрос, может ли переводчик нарушить и это.

1
18.03.2021, 23:01

Не знаю насчет Ansible, но вот рабочая команда ssh:

ssh user@10.0.0.9 'touch /tmp/test.pid; ls -ld /tmp/*.pid | grep -- "$(date "+%b %d")"'

Обратите внимание, :даже если на вашем сервере AIX -установлено GNU!binutils, команды, выполняемые через ssh, используют минимальный путь PATH, который не включает /opt/freeware/binили /usr/local/bin, поэтому используйте полный -путь, если вы хотите использоватьGNU!ls:

ssh user@10.0.0.9 'touch /tmp/test.pid; /usr/local/bin/ls -ld /tmp/*.pid | grep -- "$(date "+%b %e")"'

Редактировать :Относительно date% -последовательностей:AIX!lsсовместимо с %d, GNU!ls с %e.

0
18.03.2021, 23:01

Теги

Похожие вопросы