Linux 如何从shell向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,然后

大家好,我需要一个shell脚本,可以打开例如msfconsole,然后在其中键入命令,我制作了一个非常基本的脚本,但当msfconsole启动时,它当然会停止。。。你能给我举个例子吗

谢谢

这是我制作的基本哑巴脚本:

#!/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不在我的控制范围之内。