Macxchange Script для изменения MAC и имени хоста в Ubuntu 12.04
Я пытаюсь адаптировать скрипт в backtrack для работы с Ubuntu. Я продолжаю получать сообщение об ошибке в строке 14, которая является строкой "if [$? == 0]; затем"
скрипт был найден на http://pctechtips.org/script-to-change-mac-and-hostname-in-backtrack/
код ниже
#!/bin/bash
#author: Jorge L. Vazquez
#purpose: this script will change the mac address to random
#and will pick a random word from password.lst in jtr for hostname
#change variables "interface" and "file" to your settings
#also macchanger needs to be installed
INTERFACE=eth0
FILE=/pentest/passwords/jtr/password.lst
WORD=$(sort -R $FILE | head -1)
#changing mac address to random
ifconfig $INTERFACE down > /dev/null
if [ $? == 0 ]; then
printf "%s\nChanging mac address...\n"
macchanger -r $INTERFACE
else
printf "%sScript encounter an error, sorry...\n"
exit 1
fi
#changing hostname to random word from password.lst
printf "%s\nChanging Hostname...\n"
OLDHOST=$(hostname)
hostname $WORD
if [ $? == 0 ]; then
printf "%sPrevius Hostname: $OLDHOST \n"
printf "%sRandom Hostname: $WORD \n"
else
printf "%sScript encounter an error, sorry...\n"
exit 1
fi
#putting interface up
ifconfig $INTERFACE up > /dev/null
printf "\n"
#END
И файл списка слов для hostfile (password.lst) выглядит так
# A couple of merged /etc/hosts files --
#
4000ex
a-lhi-bbn-01
a-lhi-sri-03
a00
a1
a2
Я запускаю сценарий, используя sh filename.sh, и я дал ему доступ к исполняемому файлу, и Macchanger установлен, но я все еще получаю ошибку
1 ответ
sh не bash, поэтому не запускайте bash-скрипт с sh. Запустите его либо ./filename
(требует, чтобы скрипт был исполняемым, и использовал шебанг) или bash ./filename
(требуется только для чтения сценария, а шебанг игнорируется).
Это также не очень хорошая идея использовать расширения для скриптов, особенно не .sh
когда скрипт не является скриптом sh.
Сам скрипт использует POSIX sh совместимый синтаксис, за исключением [
команда, которая не имеет ==
оператор в POSIX. Чтобы сравнить две строки на равенство с [
команда, оператор =
, [ "$?" = 0 ]
,
Тем не менее, тестирование ли $?
0 или нет, это немного бессмысленно. Лучше просто проверить команду напрямую, чем запускать команду, а затем выполнить другую команду, чтобы определить, была ли предыдущая команда выполнена успешно.
if ifconfig "$interface" down > /dev/null; then
...
else
...
fi