0

我想制作一个 bash 脚本,在其中读取 IP 地址列表并运行以下命令:

smbclient \\\\ $ ip \\ ipc $ -U ". \ User" --pw-nt-hash

它会退出并尝试使用另一个 IP,不管它是否会在连接成功时抛出一条消息,它不会使用列表中的 IP 执行,它只会尝试使用列表中的第一个 IP。

#/bin/bash 

IPLIST="ip"

for ip in $(cat ip)
do
   smbclient \\\\$ip\\C$ -U ".\user" --pw-nt-hash "user"
   exit
done 
4

2 回答 2

0

您似乎假设将exit作为输入传递给smbclient,但这不是它的工作原理。您运行smbclient,当它完成时,您的脚本继续,并执行exit. 有关更全面的讨论,请参阅将命令作为输入传递给另一个命令(su、ssh、sh 等)

另外,不要阅读带有for.

#/bin/bash 

while read -r ip; do
   smbclient \\\\$ip\\C$ -U ".\user" --pw-nt-hash "user" <<<exit
done <ip
于 2020-10-21T07:12:51.767 回答
0

如果您不希望脚本在第一个之后退出smbclient,请删除该exit命令。

smbclient \ $ ip \ ipc $ -U ".\User" --pw-nt-hash,执行退出

exit不是由脚本完成的smbclient,而是由脚本完成的;因此它结束了。

于 2020-10-21T05:50:45.637 回答