Чтение онлайн

на главную

Жанры

Искусство программирования на языке сценариев командной оболочки

Купер Мендель

Шрифт:

Пример 12-41. Захват нажатых клавиш

#!/bin/bash

# Захват нажатых клавиш.

keypresses=4 # Количество фиксируемых нажатий.

old_tty_setting=$(stty -g) # Сохранить настройки терминала.

echo "Нажмите $keypresses клавиши."

stty -icanon -echo # Запретить канонический режим.

# Запретить эхо-вывод.

keys=$(dd bs=1 count=$keypresses 2> /dev/null)

# 'dd'

использует stdin, если "if" не задан.

stty "$old_tty_setting" # Восстановить настройки терминала.

echo "Вы нажали клавиши \"$keys\"."

# Спасибо S.C.

exit 0

Команда dd имеет возможность произвольного доступа к данным в потоке.

echo -n . | dd bs=1 seek=4 of=file conv=notrunc

# Здесь, опция "conv=notrunc" означает, что выходной файлне будет усечен.

# Спасибо, S.C.

Команда dd может использоваться для создания образов дисков, считывая данные прямо с устройств, таких как дискеты, компакт диски, магнитные ленты (Пример A-6). Обычно она используется для создания загрузочных дискет.

dd if=kernel-image of=/dev/fd0H1440

Точно так же, dd может скопировать все содержимое дискеты, даже с неизвестной файловой системой, на жесткий диск в виде файла-образа.

dd if=/dev/fd0 of=/home/bozo/projects/floppy.img

Еще одно применение dd– - создание временного swap-файла (Пример 28-2) и ram-дисков (Пример 28-3). Она может создавать даже образы целых разделов жесткого диска, хотя и не рекомендуется делать это без особой на то необходимости.

Многие (которые, вероятно, не знают чем себя занять) постоянно придумывают все новые и новые области применения команды dd.

Пример 12-42. Надежное удаление файла

#!/bin/bash

# blotout.sh: Надежно удаляет файл.

# Этот суенарий записывает случайные данные в заданный файл,

#+ затем записывает туда нули и наконец удаляет файл.

# После такого удаления даже анализ дисковых секторов

#+ не даст ровным счетом ничего.

PASSES=7 # Количество проходов по файлу.

BLOCKSIZE=1 # операции ввода/вывода в/из /dev/urandom требуют указания размера блока,

#+ иначе вы не получите желаемого результата.

E_BADARGS=70

E_NOT_FOUND=71

E_CHANGED_MIND=72

if [ -z "$1" ] # Имя файла не указано.

then

echo "Порядок использования: `basename $0` filename"

exit $E_BADARGS

fi

file=$1

if [ !
– e "$file" ]

then

echo "Файл \"$file\"

не найден."

exit $E_NOT_FOUND

fi

echo; echo -n "Вы совершенно уверены в том, что желаете уничтожить \"$file\" (y/n)? "

read answer

case "$answer" in

[nN]) echo "Передумали? Операция отменена."

exit $E_CHANGED_MIND

;;

*) echo "Уничтожается файл \"$file\".";;

esac

flength=$(ls -l "$file" | awk '{print $5}') # Поле с номером 5 -- это длина файла.

pass_count=1

echo

while [ "$pass_count" -le "$PASSES" ]

do

echo "Проход #$pass_count"

sync # Вытолкнуть буферы.

dd if=/dev/urandom of=$file bs=$BLOCKSIZE count=$flength

# Заполнить файл случайными данными.

sync # Снова вытолкнуть буферы.

dd if=/dev/zero of=$file bs=$BLOCKSIZE count=$flength

# Заполнить файл нулями.

sync # Снова вытолкнуть буферы.

let "pass_count += 1"

echo

done

rm -f $file # Наконец удалить изрядно "подпорченный" файл.

sync # Вытолкнуть буферы в последний раз.

echo "Файл \"$file\" уничтожен."; echo

# Это довольно надежный, хотя и достаточно медленный способ уничтожения файлов.

#+ Более эффективно это делает команда "shred",

#+ входящая в состав пакета GNU "fileutils".

# Уничтоженный таким образом файл, не сможет быть восстановлен обычными методами.

# Однако...

#+ эта метода вероятно НЕ сможет противостоять аналитическим службам

#+ из СООТВЕТСТВУЮЩИХ ОРГАНОВ

# Tom Vier разработал пакет "wipe", который более надежно стирает файлы

#+ чем этот простой сценарий.

# http://www.ibiblio.org/pub/Linux/utils/file/wipe-2.0.0.tar.bz2

# Для более глубоко изучения проблемы надежного удаления файлов,

#+ рекомендую обратиться к cnfnmt Peter Gutmann,

#+ "Secure Deletion of Data From Magnetic and Solid-State Memory".

# http://www.cs.auckland.ac.nz/~pgut001/pubs/secure_del.html

exit 0

od

Команда od (octal dump) производит преобразование ввода (или файла) в один или несколько форматов, в соответствии с указанными опциями. При отсутствии опций используется восьмеричный формат (опция -o). Эта команда полезна при просмотре или обработке файлов с двоичными данными, например /dev/urandom. См. Пример 9-26 и Пример 12-10.

Поделиться:
Популярные книги

Я не князь. Книга XIII

Дрейк Сириус
13. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я не князь. Книга XIII

Последний попаданец 11. Финал. Часть 1

Зубов Константин
11. Последний попаданец
Фантастика:
фэнтези
юмористическое фэнтези
рпг
5.00
рейтинг книги
Последний попаданец 11. Финал. Часть 1

Покоритель Звездных врат

Карелин Сергей Витальевич
1. Повелитель звездных врат
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Покоритель Звездных врат

Совок-8

Агарев Вадим
8. Совок
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Совок-8

Столичный доктор. Том III

Вязовский Алексей
3. Столичный доктор
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Столичный доктор. Том III

Король Масок. Том 1

Романовский Борис Владимирович
1. Апофеоз Короля
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Король Масок. Том 1

Ищу жену для своего мужа

Кат Зозо
Любовные романы:
любовно-фантастические романы
6.17
рейтинг книги
Ищу жену для своего мужа

Мастер Разума III

Кронос Александр
3. Мастер Разума
Фантастика:
героическая фантастика
попаданцы
аниме
5.25
рейтинг книги
Мастер Разума III

Темный Охотник 2

Розальев Андрей
2. Темный охотник
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Темный Охотник 2

Идеальный мир для Лекаря 20

Сапфир Олег
20. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 20

Обыкновенные ведьмы средней полосы

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Обыкновенные ведьмы средней полосы

Возвышение Меркурия. Книга 16

Кронос Александр
16. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 16

Адепт. Том 1. Обучение

Бубела Олег Николаевич
6. Совсем не герой
Фантастика:
фэнтези
9.27
рейтинг книги
Адепт. Том 1. Обучение

Идущий в тени 4

Амврелий Марк
4. Идущий в тени
Фантастика:
боевая фантастика
6.58
рейтинг книги
Идущий в тени 4