использование ls в bash

Существует способ хранения паролей в сценарии bash, но вы должны зашифровать и обфусцировать сценарий, чтобы никто не мог прочитать его или запустить отладчик любого типа, чтобы увидеть, что именно он делает. Чтобы зашифровать и обфусцировать сценарий bash/shell и сделать его действительно исполняемым, попробуйте скопировать и вставить его сюда:

http://www.kinglazy.com/shell-script-encryption-kinglazy-shieldx.htm

На вышеуказанной странице все, что вам нужно сделать, это отправить свой сценарий (вы можете сначала отправить образец сценария для вашего спокойствия). Для вас будет создан zip-файл. Щелкните правой кнопкой мыши на ссылке загрузки и скопируйте URL, который вам будет предоставлен. Затем перейдите на свой UNIX-компьютер и выполните следующие шаги.

Installation:

  1. wget link-to-the-zip-file

  2. unzip the-newly-downloaded-zip-file

  3. cd /tmp/KingLazySHIELD

  4. ./install. sh /var/tmp/KINGLAZY/SHIELDX-(your-script-name) /home/(your-username) -force

Что сделает для вас приведенная выше команда install:

  1. Она установит зашифрованную версию вашего скрипта в каталог /var/tmp/KINGLAZY/SHIELDX-(your-script-name).

  2. Он поместит ссылку на этот зашифрованный скрипт в любой каталог, который вы укажете вместо /home/(ваше имя пользователя) - таким образом, вы сможете легко получить доступ к скрипту без необходимости вводить абсолютный путь.

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

  4. Гарантирует, что абсолютно НИКТО не сможет сделать его копии. Никто не сможет скопировать ваш скрипт в укромное место и попытаться возиться с ним, чтобы посмотреть, как он работает. Все копии скрипта должны быть связаны с исходным местоположением, которое вы указали при установке (шаг 4).

ПРИМЕЧАНИЕ:

Я не верю, что это работает для интерактивных скриптов, которые запрашивают ответ у пользователя. Значения должны быть жестко закодированы в сценарии. Шифрование гарантирует, что никто не сможет увидеть эти значения, поэтому вам не нужно беспокоиться об этом.

1
06.02.2016, 11:59
2 ответа

Нет абсолютно никакой причины разбирать вывод ls, когда расширение фактически выполняется оболочкой. Вместо этого кода:

for data in `ls a*| sort -n`

Вы можете использовать этот:

for data in a*

Даже если вам нужно отсортировать его, используйте этот (который потерпит неудачу для имен файлов с новыми строками):

for data in $( echo a* | sort -n )

И лучший способ работать с несколькими значениями - это сделать их массивом.
В частности, массив параметров:

set -- a*
printf '<%s>' "$@"; echo

И ваш код для выполнения некоторой работы по очереди станет таким простым:

#!/bin/bash
set -- a*
numb=$#
printf '%s ' "$@"

Чтобы выполнить обработку на основе номера файла, вы можете сделать:

#!/bin/bash
# using bash as the [[ is more robust.

set -- a*         # set an array of all files that start by a
for    file       # walk the array one by one
do
       [[ ${file#a\.} -le 20 ]] && continue # is the file number < 20
       printf '%s\n' "$file"                # do additional processing here
done
1
29.04.2021, 00:18

Следующая команда будет работать со всеми файлами, соответствующими запрашиваемому шаблону. Обратите внимание, что он также будет соответствовать файлам типа a.2y, которые существуют, а не только числовым суффиксам:

for file in a.2?; do
   #stuff with ${file}
done

Если вы хотите обратиться только к файлам с числовыми суффиксами, подойдет следующий вариант:

for file in a.2{0..9}; do
    if [[ -f ${file} ]]; then # file exists
        # stuff with ${file}
    fi
done
0
29.04.2021, 00:18

Теги

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