bash$ cksum /boot/vmlinuz
1670054224 804083 /boot/vmlinuz
bash$ md5sum /boot/vmlinuz
0f43eccea8f09e0a0b2b5cf1dcf333ba /boot/vmlinuz
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΡΡΠΈΠ»ΠΈΡΠ° cksum Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ ΡΡΠΌΠΌΡ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° Π² Π±Π°ΠΉΡΠ°Ρ .
ΠΡΠΈΠΌΠ΅Ρ 12-29. ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ ΡΠ°ΠΉΠ»Π°
#!/bin/bash
# file-integrity.sh: ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅
E_DIR_NOMATCH=70
E_BAD_DBFILE=71
dbfile=File_record.md5
# Π€Π°ΠΉΠ» Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ ΡΡΠΌΠΌ.
set_up_database ()
{
echo ""$directory"" > "$dbfile"
# ΠΠ°ΠΏΠΈΡΠ°ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° Π² ΠΏΠ΅ΡΠ²ΡΡ ΡΡΡΠΎΠΊΡ ΡΠ°ΠΉΠ»Π°.
md5sum "$directory"/* >> "$dbfile"
# ΠΠ°ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠ΅ ΡΡΠΌΠΌΡ md5 ΠΈ ΠΈΠΌΠ΅Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ².
}
check_database ()
{
local n=0
local filename
local checksum
# ------------------------------------------- #
# ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΈ Π½Π΅ Π½ΡΠΆΠ½Π°,
#+ Π½ΠΎ Π»ΡΡΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΡΡΠ°Ρ ΠΎΠ²Π°ΡΡΡΡ ΡΠ΅ΠΉΡΠ°Ρ, ΡΠ΅ΠΌ ΠΆΠ°Π»Π΅ΡΡ ΠΎΠ± ΡΡΠΎΠΌ ΠΏΠΎΡΠΎΠΌ.
if [ ! -r "$dbfile" ]
then
echo "ΠΠ΅ ΠΌΠΎΠ³Ρ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΡΠ°ΠΉΠ» Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠΌΠΈ ΡΡΠΌΠΌΠ°ΠΌΠΈ!"
exit $E_BAD_DBFILE
fi
# ------------------------------------------- #
while read record[n]
do
directory_checked="${record[0]}"
if [ "$directory_checked" != "$directory" ]
then
echo "ΠΠΌΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ Π·Π°ΠΏΠΈΡΠ°Π½ΡΠΌ Π² ΡΠ°ΠΉΠ»Π΅!"
# ΠΠΎΠΏΡΡΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ ΡΡΠΌΠΌ Π΄Π»Ρ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°.
exit $E_DIR_NOMATCH
fi
if [ "$n" -gt 0 ] # ΠΠ΅ ΠΈΠΌΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°.
then
filename[n]=$( echo ${record[$n]} | awk '{ print $2 }' )
# md5sum Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅,
#+ ΡΠ½Π°ΡΠ°Π»Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ ΡΡΠΌΠΌΡ, Π·Π°ΡΠ΅ΠΌ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°.
checksum[n]=$( md5sum "${filename[n]}" )
if [ "${record[n]}" = "${checksum[n]}" ]
then
echo "Π€Π°ΠΉΠ» ${filename[n]} Π½Π΅ Π±ΡΠ» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½."
else
echo "ΠΠ¨ΠΠΠΠ ΠΠΠΠ’Π ΠΠΠ¬ΠΠΠ Π‘Π£ΠΠΠ« Π΄Π»Ρ ΡΠ°ΠΉΠ»Π° ${filename[n]}!"
# Π€Π°ΠΉΠ» Π±ΡΠ» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ.
fi
fi
let "n+=1"
done <"$dbfile" # Π§ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ ΡΡΠΌΠΌ ΠΈΠ· ΡΠ°ΠΉΠ»Π°.
}
# =================================================== #
# main ()
if [ -z "$1" ]
then
directory="$PWD" # ΠΡΠ»ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π½Π΅ Π·Π°Π΄Π°Π½,
else #+ ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³.
directory="$1"
fi
clear # ΠΡΠΈΡΡΠΊΠ° ΡΠΊΡΠ°Π½Π°.
# ------------------------------------------------------------------ #
if [ ! -r "$dbfile" ] # ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΉΠ» Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠΌΠΈ ΡΡΠΌΠΌΠ°ΠΌΠΈ?
then
echo "Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠΌΠΈ ΡΡΠΌΠΌΠ°ΠΌΠΈ, \""$directory"/"$dbfile"\"."; echo
set_up_database
fi
# ------------------------------------------------------------------ #
check_database # ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ.
echo
# ΠΡΠ²ΠΎΠ΄ ΡΡΠΎΠ³ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²ΠΈΡΡ Π² ΡΠ°ΠΉΠ»,
#+ ΡΡΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ°ΠΉΠ»ΠΎΠ².
# ΠΠΎΠ»Π΅Π΅ ΡΡΡΠΎΠ³Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²,
#+ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ° "Tripwire",
#+ http://sourceforge.net/projects/tripwire/.
exit 0
ΠΠΎΠ»Π΅Π΅ ΡΠ²ΠΎΡΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ md5sum Π²Ρ Π½ΠΉΠ΄Π΅ΡΠ΅ Π² ΠΡΠΈΠΌΠ΅Ρ A-21.
shred
ΠΠ°Π΄Π΅ΠΆΠ½ΠΎΠ΅, Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΡΡΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°, ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ, ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠ°ΠΉΠ» ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΡΠ΄Π°Π»ΠΈΡΡ Π΅Π³ΠΎ. ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΡ ΠΆΠ΅ ΡΡΡΠ΅ΠΊΡ, ΡΡΠΎ ΠΈ ΠΡΠΈΠΌΠ΅Ρ 12-42, Π½ΠΎ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ·ΡΡΠ½ΡΠΌ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ.
Π―Π²Π»ΡΠ΅ΡΡΡ ΡΠΎΡΡΠ°Π²Π½ΠΎΠΉ ΡΠ°ΡΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ° GNU fileutils.
ΠΠΌΠ΅Π΅ΡΡΡ ΡΡΠ΄ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΡΡ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ°ΠΉΠ»Ρ, ΡΠ΄Π°Π»Π΅Π½Π½ΡΠ΅ ΡΡΠΈΠ»ΠΈΡΠΎΠΉ shred.
ΠΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅
uuencode
ΠΡΠ° ΡΡΠΈΠ»ΠΈΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΡΠΈΠΌΠ²ΠΎΠ»Ρ ASCII, ΠΏΠΎΡΠ»Π΅ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»Ρ ΠΌΠΎΠ³ΡΡ, Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡΡΡ ΠΏΠΎ ΡΠ΅ΡΠΈ, Π²ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ Π² ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΠ΅ ΠΏΠΈΡΡΠΌΠ° ΠΈ Ρ.ΠΏ..
uudecode
Π£ΡΠΈΠ»ΠΈΡΠ° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΏΡΠΎΡΠ΅Π΄ΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΡΠΈΠ»ΠΈΡΠΎΠΉ uuencode.
ΠΡΠΈΠΌΠ΅Ρ 12-30. ΠΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²
#!/bin/bash
lines=35 # 35 ΡΡΡΠΎΠΊ Π΄Π»Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° (Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ).
for File in * # ΠΠ±Ρ ΠΎΠ΄ Π²ΡΠ΅Ρ ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅...
do
search1=`head -$lines $File | grep begin | wc -w`
search2=`tail -$lines $File | grep end | wc -w`
# ΠΠ°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ ΡΠΎ ΡΠ»ΠΎΠ²Π° "begin",
#+ ΠΈ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ ΡΠ»ΠΎΠ²ΠΎΠΌ "end".
if [ "$search1" -gt 0 ]
then
if [ "$search2" -gt 0 ]
then
echo "Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΡΠ΅ΡΡΡ ΡΠ°ΠΉΠ» - $File -"
uudecode $File
fi
fi
done
# ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΡ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠ΅Π±Ρ, Π΄Π»Ρ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ,
#+ ΡΠΎ ΡΡΠΎ Π²Π²Π΅Π΄Π΅Ρ Π΅Π³ΠΎ Π² Π·Π°Π±Π»ΡΠΆΠ΄Π΅Π½ΠΈΠ΅
#+ ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² ΡΠ΅ΠΊΡΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΡ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ ΡΠ»ΠΎΠ²Π° "begin" ΠΈ "end".
exit 0
ΠΡΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ Π²ΡΠ²ΠΎΠ΄Π΅ Π΄Π»ΠΈΠ½Π½ΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈΠ· Π½ΠΎΠ²ΠΎΡΡΠ½ΡΡ Π³ΡΡΠΏΠΏ Usenet, ΠΎΡΠ΅Π½Ρ Π½Π΅Π»ΠΈΡΠ½ΠΈΠΌ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠ΅ΠΊΡΡ, ΠΏΠΎ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΡ, ΠΊΠΎΠΌΠ°Π½Π΄Π΅ fold -s.
mimencode, mmencode
Π£ΡΠΈΠ»ΠΈΡΡ mimencode ΠΈ mmencode ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½ΡΡ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΠ΅ ΠΏΠΈΡΡΠΌΠ°. Π₯ΠΎΡΡ ΠΏΠΎΡΡΠΎΠ²ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ (ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ pine ΠΈΠ»ΠΈ kmail) ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ°ΠΊΠΈΡ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΡΡΠΈ ΡΡΠΈΠ»ΠΈΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΡ Π²ΡΡΡΠ½ΡΡ, ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈΠ»ΠΈ Π² ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅, ΠΈΠ· ΡΡΠ΅Π½Π°ΡΠΈΡ Π½Π° ΡΠ·ΡΠΊΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ.
crypt
ΠΠ΄Π½ΠΎ Π²ΡΠ΅ΠΌΡ, ΡΡΠΎ Π±ΡΠ»Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ, Π΄Π»Ρ UNIX, ΡΡΠΈΠ»ΠΈΡΠ° ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ².[ 31 ] ΠΠΎΠ»ΠΈΡΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠΎΡΠΈΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅, ΠΏΡΠ°Π²ΠΈΡΠ΅Π»ΡΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΏΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΡΠ΄Π° ΡΡΡΠ°Π½, Π½Π°ΠΏΡΡΠΌΡΡ Π·Π°ΠΏΡΠ΅ΡΠ°ΡΡ ΡΠΊΡΠΏΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠΎ, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅, ΠΏΡΠΈΠ²Π΅Π»ΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΊ ΠΏΠΎΠ»Π½ΠΎΠΌΡ ΠΈΡΡΠ΅Π·Π½ΠΎΠ²Π΅Π½ΠΈΡ crypt ΠΈΠ· Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° UNIX-ΡΠΈΡΡΠ΅ΠΌ (Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ Linux). Π ΡΡΠ°ΡΡΡΡ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌΠΈ Π±ΡΠ»ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΡΠΈΠ»ΠΈΡΠ½ΡΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ², ΠΈ ΡΡΠ΅Π΄ΠΈ Π½ΠΈΡ cruft (ΡΠΌ. ΠΡΠΈΠΌΠ΅Ρ A-5).
ΠΡΠΎΡΠ΅Π΅
mktemp
Π‘ΠΎΠ·Π΄Π°Π΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» Ρ "ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌ" ΠΈΠΌΠ΅Π½Π΅ΠΌ.
PREFIX=filename
tempfile=`mktemp $PREFIX.XXXXXX`
# ^^^^^^ ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎ ΠΌΠ΅Π½ΡΡΠ΅ΠΉ ΠΌΠ΅ΡΠ΅ 6 Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π΅ΠΉ
echo "ΠΈΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° = $tempfile"
# ΠΈΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° = filename.QA2ZpY
# ΠΈΠ»ΠΈ Π½Π΅ΡΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅...
make
Π£ΡΠΈΠ»ΠΈΡΠ° Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π»ΡΠ±ΡΡ Π΄ΡΡΠ³ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΡ Π½Π° Π°Π½Π°Π»ΠΈΠ·Π΅ Π½Π°Π»ΠΈΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΠ°ΠΉΠ»Π°Ρ .
ΠΠΎΠΌΠ°Π½Π΄Π° make ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π² ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅ Makefile, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠ΅ΡΠ΅ΡΠ΅Π½Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΄Π»Ρ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠ΅Π½ΠΈΡ ΡΡΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ.
install
Π‘Π²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ΄Π° -- ΡΡΠΈΠ»ΠΈΡΠ° ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΏΠΎΡ ΠΎΠΆΠ° Π½Π° cp, Π½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΏΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ° ΠΈ Π°ΡΡΠΈΠ±ΡΡΡ ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠ°ΠΏΡΡΠΌΡΡ ΡΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΎΠ½Π° Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Π² Makefile (Π² ΡΠ°Π·Π΄Π΅Π»Π΅ make install :). ΠΠ½Π° ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΡΡΠ΅Π½Π°ΡΠΈΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΠ.
dos2unix
ΠΠ²ΡΠΎΡ ΡΡΠΈΠ»ΠΈΡΡ -- Benjamin Lin ΡΠΎ-ΡΠΎΠ²Π°ΡΠΈΡΠΈ. ΠΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ· ΡΠΎΡΠΌΠ°ΡΠ° DOS (Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΡΠΎΠΊΠΈ Π·Π°Π²Π΅ΡΡΠ°ΡΡΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠ΅ΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² CR-LF) Π² ΡΠΎΡΠΌΠ°Ρ UNIX (Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΡΠΎΠΊΠΈ Π·Π°Π²Π΅ΡΡΠ°ΡΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ LF) ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ.
ptx
ΠΠΎΠΌΠ°Π½Π΄Π° ptx [targetfile] Π²ΡΠ²ΠΎΠ΄ΠΈΡ a ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΠΉ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΡΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π΄Π»Ρ targetfile, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΠΊΠ°ΠΊΠΎΠΉ Π»ΠΈΠ±ΠΎ ΡΡΠΈΠ»ΠΈΡΠΎΠΉ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ΅.
more, less
ΠΠΎΠΌΠ°Π½Π΄Ρ ΠΏΠΎΡΡΡΠ°Π½ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π½Π° stdout. ΠΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΡΡΠ΅Π½Π°ΡΠΈΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΈΠ»ΡΡΡΠΎΠ².
12.6. ΠΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅ΡΡΡ
ΠΠΎΠΌΠ°Π½Π΄Ρ, ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌΡΠ΅ Π² ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅, ΠΌΠΎΠ³ΡΡ Π½Π°ΠΉΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ ΠΏΠΎ ΡΠ΅ΡΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² Π±ΠΎΡΡΠ±Π΅ ΡΠΎ ΡΠΏΠ°ΠΌΠ΅ΡΠ°ΠΌΠΈ.
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°
host
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΡΠ·Π»Π΅ ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°, ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΈΠ»ΠΈ IP Π°Π΄ΡΠ΅ΡΡ, Π²ΡΠΏΠΎΠ»Π½ΡΡ ΠΏΠΎΠΈΡΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»ΡΠΆΠ±Ρ DNS.
bash$ host surfacemail.com
surfacemail.com. has address 202.92.42.236