Почему скрипт F5 Big IP CLI, созданный самостоятельно, не работает, хотя команда работает с терминала?

Дано

$ ls
 989875.txt   myname.csv  'some long.msg'   XYZABC.csv   XYZABC.txt

Тогда

$ find. ! \( -name 'XYZABC.*' -o -name '*.msg' \)
.
./myname.csv
./989875.txt

Так например

$ find. -type f ! \( -name 'XYZABC.*' -o -name '*.msg' \) -printf '1' | wc -c
2
0
15.05.2021, 19:48
2 ответа

Исправлено. Спасибо Муру за указание на проблему с цитатой.

#!/bin/sh

user=$(echo "" | dmenu -p "Enter user:")
secret="$(echo "" | dmenu -p  "Enter secret(PIN, OTP, Password):")"

cmd="f5fpc --start -u $user -p '$secret' -t $F5FPC_HOST"

eval "$cmd"
-1
28.07.2021, 11:32

Вы могли бы сделать:

user="$(printf "" | dmenu -p "Enter user:")"
pass="$(printf "" | dmenu -P -p "Enter secret(PIN, OTP, Password):")"

f5fpc --start -u "$user" -p "$pass" -t "$F5FPC_HOST"

Использование printf ""для предотвращения чтения dmenu stdin в виде списка. echoдобавит новый символ строки -, а dmenuувидит, что это пустая запись списка.

Кроме того, вы должны проверить, не перезаписывает ли f5fpcпароль в argv -, чтобы он не раскрывался, например, с помощью ps.

Было бы лучше открыть этот скрипт в оболочке и указать f5fpcв качестве пароля, если это так.

1
28.07.2021, 11:32

Теги

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