创建tshark bash脚本以导出对象

时间:2015-12-14 22:44:42

标签: linux bash

好的,所以我刚刚开始学习网络安全,并且在这之前不了解linux。我正在尝试编写一个脚本,它基本上会执行wireshark中的GUI,当您按照tcp流然后导出对象时。我几乎没有任何编码背景,我想知道最好的格式。一切都工作得很好然后我决定添加一个函数来测试输出与原始md5sum。我无法让它发挥作用。

function testScript {

    if [[ $test == "yes" ]]; then
            echo "Type original file path: ";
            read ogfpath;
            md5sum "$fpath" "$ogfpath" > print
    else
    echo "Goodbye"

fi
}

echo -n 'Type stream number and press ENTER: '
read stream

echo -n 'Type pcap path and press ENTER: '
read pcap

echo -n 'Type magic number and press ENTER: '
read mnum

echo -n 'Type new file path and press ENTER: '
read fpath

tshark -2 -q -z follow,tcp,raw,$stream -r $pcap | tr '\n' ' ' | sed 's\ \\g'      | grep -oP "(?<="$mnum").+" | sed "s/^/"$mnum"/g" | xxd -r -p > $fpath

echo -n 'Do you want to test the program (y/n)? :'
read test

testScript

1 个答案:

答案 0 :(得分:1)

我在这里看到的问题是你的$ test变量是本地的,只能从内部访问你的函数,换句话说,除非它在函数内部定义,它在那里不存在所有

解决这个问题的一个简单方法是将参数传递给函数,这在bash中非常容易。例如:

function test {
    if [ "$1" == "yes" ]; then
        echo "True!"
    else
        echo "False!"
    fi
}

test "yes"

在这个例子中,参数传递给函数&#34; test&#34;是&#34;是&#34;,通过变量$ 1在函数内部访问。可以将更多参数传递给函数并按顺序访问,$ 2 $ 3等。在您的情况下,您的函数必须像这样调用:

testScript $test

函数中的if语句必须如下所示:

if [[ $1 == "yes" ]]; then