Найти файл и отправить электронное письмо

Если вы компилируете на самой целевой машине, uname -mдаст вам то, что вы хотите на большинстве машин. например. на моей 64-битной -настольной машине:

$ uname -m
x86_64

Это не скажет вам явно, является ли машина 64-битной или 32-битной. Это просто строка, которую вам придется интерпретировать (, например. с серией операторов if/thenили оператором case).

Вот (очень грубый )пример в sh:

machine=$(uname -m)
bits=0

case "$machine" in
       *64*) bits=64 ;;
  *[3-6]86*) bits=32 ;;
    *armv7*) bits=32 ;;  # replace with a pattern to match your 32-bit android cpu
    *armv8*) bits=64 ;;  # replace with a pattern to match your 64-bit android cpu
esac

[ "$bits" = 0 ] && echo "Unknown machine type" && exit 1
1
29.11.2019, 06:36
2 ответа

Попробуйте следующий код.

#!/bin/sh
cd /my/path
while true; do
    Hrs=`date "+%H"`
    if [ "$Hrs" -ge 17 ] && [ "$Hrs" -le 23 ]; then
        if  [ -f tt.txt ]; then
          echo "File Found" | mail -s "This is the subject" <email address>
        fi
    fi
    sleep 60
done

Я проверил весь скрипт, кроме почтовой части. Все остальное работает, надеюсь, почта тоже. Ваше здоровье.

2
27.01.2020, 23:29

Существует точный тест (во всех оболочках ), чтобы увидеть, существует ли файл, является ли он реальным файлом, доступен ли он для чтения и т. д. Следует избегать использования ls.

.. Он будет отправлять сообщение об ошибке каждый раз, когда файла нет.

.. Каждый раз запускает внешний процесс.

.. Это также обнаружит каталог, именованный канал, устройство и т. д.

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

Было бы лучше объявить имя файла один раз как переменную оболочки. А еще лучше сделать его аргументом скрипта, чтобы его можно было использовать для разных файлов без изменений.

Сон 5 отличается от сна 60.

0
27.01.2020, 23:29

Теги

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