Linux 如何从shell向msfconsole发送命令?
大家好,我需要一个shell脚本,可以打开例如msfconsole,然后在其中键入命令,我制作了一个非常基本的脚本,但当msfconsole启动时,它当然会停止。。。你能给我举个例子吗 谢谢 这是我制作的基本哑巴脚本:Linux 如何从shell向msfconsole发送命令?,linux,shell,metasploit,Linux,Shell,Metasploit,大家好,我需要一个shell脚本,可以打开例如msfconsole,然后在其中键入命令,我制作了一个非常基本的脚本,但当msfconsole启动时,它当然会停止。。。你能给我举个例子吗 谢谢 这是我制作的基本哑巴脚本: #!/bin/bash service postgresql start && sleep 4 && msfconsole && sleep 15 && quit 正如您所见,我首先启动postgresql,然后
#!/bin/bash
service postgresql start && sleep 4 && msfconsole && sleep 15 && quit
正如您所见,我首先启动postgresql,然后启动msfconsole,当我尝试关闭它时,我无法关闭它,因为我不在shell中,但我进入了metasploit。我不熟悉msfconsole,但如果执行它,则会提示您输入命令,然后我使用的以下方法可以使用gdisk对ssd进行分区,这可能对您有用
#!/bin/sh
(
# Delete current partition table
echo o # Delete partition table
echo Y # Confirm deletion
# Create Linux LVM partition
echo n # Create new partition
echo 3 # Partition number
echo # First Sector
echo # Last Sector
echo 8E00 # Set partition type: Linux LVM
# Write out partition table
echo w # Write out new partition table
echo Y # Confirm write
) | gdisk /dev/sdx
如果命令
“
中需要空间,例如:echo“ls-ltr”
如果希望脚本中的命令被msfconsole
读取,则需要将它们指向其stdin;否则,它们只能由shell本身读取(等待msfconsole
退出后再继续)
将一组文本重定向到给定命令的一种方法是使用heredoc:
#!/bin/bash
service postgresql start || exit
msfconsole <<EOF
sleep 15
quit
EOF
#/bin/bash
服务postgresql开始| |退出
msfconsole签出。由于不熟悉metasploit,第一个选项中的“资源脚本”似乎是最好的选择。在bash脚本中,您可以使用-r
标志调用MFS解决方案,并参考资源脚本以获取要执行的命令(如果您喜欢,也可以使用Heredoc。整个(echo…)
块也可以写成一行:printf'%s\n'o Y n 3''''8E00 w Y
BTW,a和&b|c
不等同于如果a;那么b;否则c;fi
——前者可以同时运行b
和c
(如果b
以非零状态退出),而后者保证只做一个或另一个(当然,两个echo
s将指向同一个文件描述符没什么大不了的——如果一个失败,另一个也可能失败——但如果在其他情况下使用,这个成语可能会咬一个)。耸耸肩。这就是他们所说的“事实密集型调查”(这就是为什么我编辑问题以添加标签)。给定的语法明确地将命令sleep 15
和quit
发送到msfconsole
的stdin;问题是msfconsole是否真的期望或从stdin读取它们。关于shell语法和语义,我可以说一些权威,但metasploit不在我的控制范围之内。