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

и файл списка слов для файла хоста (пароль. lst) выглядит так

# A couple of merged /etc/hosts files -- 
#
4000ex
a-lhi-bbn-01
a-lhi-sri-03
a00
a1
a2

Я запускаю скрипт, используя sh filename.sh, и я дал ему доступ к исполняемому файлу, и Macchanger установлен, но я все еще получаю ошибку

0
задан 8 May 2013 в 22:42

1 ответ

sh не bash, поэтому не запускайте bash-скрипт с sh. Запустите его либо с ./filename (требует, чтобы скрипт был исполняемым, и использовал шебанг), либо с bash ./filename (требуется только, чтобы скрипт читался, а шебанг игнорируется).

Также не рекомендуется использовать расширения для сценариев, особенно .sh, когда сценарий не является сценарием sh.

Сам сценарий использует совместимый с POSIX sh синтаксис, за исключением команды [, у которой нет оператора == в POSIX. Чтобы сравнить две строки на равенство с командой [, оператором является =. [ "$?" = 0 ].

Тем не менее, проверка, является ли $? 0 или нет, немного бессмысленна. Лучше просто проверить команду напрямую, чем запускать команду, а затем выполнить другую команду, чтобы определить, была ли предыдущая команда выполнена успешно.

if ifconfig "$interface" down > /dev/null; then
    ...
else
    ...
fi
0
ответ дан 8 May 2013 в 22:42

Другие вопросы по тегам:

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