การแสดงรายการ smb ที่แชร์บนเครือข่ายผ่านบรรทัดคำสั่งใน linux


32

ฉันสงสัยว่ามีวิธีในการแสดงรายการเซิร์ฟเวอร์ smb ทั้งหมดบนเครือข่ายท้องถิ่น (เช่นการดูพื้นที่ใกล้เคียงเครือข่ายใน windows) ผ่านทางบรรทัดคำสั่งใน fedora หรือไม่


คุณหมายถึงอะไรกับ 'เซิร์ฟเวอร์ smb' คุณหมายถึงเซิร์ฟเวอร์แซมบ้าหรือคุณหมายถึงไฟล์เซิร์ฟเวอร์ทั้งหมด (ไม่ว่าจะเป็นแซมบ้าหรือ Windows ไม่ว่าจะเป็นของฉันเองหรือในกลุ่มงาน / โดเมนอื่น ๆ ) ซึ่งพูดถึงโปรโตคอล SMB
Kurt Pfeifle

1
นอกจากนี้ชื่อคำถามของคุณ (กล่าวถึง 'smb share') ค่อนข้างขัดแย้งกับข้อความ (กล่าวถึง 'เซิร์ฟเวอร์ smb') คุณหมายถึงอันไหน
Kurt Pfeifle

คำตอบ:


43

คำสั่งนี้เป็นความลับที่รู้จักกันน้อยมากของ Samba ส่งคืนที่อยู่ IP ของเซิร์ฟเวอร์Sambaทั้งหมดในโดเมนออกอากาศของตัวเอง:

nmblookup __SAMBA__

อันนี้ส่งคืนรายการของชื่อ NetBIOS ทั้งหมดและนามแฝงของเซิร์ฟเวอร์ Samba ทั้งหมดในละแวกนั้น (มันทำ'แบบสอบถามสถานะโหนด' ):

nmblookup -S __SAMBA__

อันนี้ส่งคืนรายการที่อยู่ IP ทั้งหมดของเซิร์ฟเวอร์SMB (นั่นคือ Linux + Unix / Samba หรือ Windows) ในพื้นที่ใกล้เคียง:

nmblookup '*'

สุดท้ายชื่อ NetBIOS ทั้งหมดและนามแฝงของเซิร์ฟเวอร์ SMB ทั้งหมด (Linux + Unix / Samba หรือ Windows):

nmblookup -S '*'


คำสั่งที่ให้ไว้ในคำตอบอื่น ๆnmblookup -S WORKGROUPจะไม่ส่งคืน Samba ทั้งหมดหรือเซิร์ฟเวอร์ SMB ทั้งหมดจากพื้นที่ใกล้เคียง แต่มันกลับชื่อ NetBIOS เซิร์ฟเวอร์ทั้งหมดที่เกิดขึ้นจะเป็นสมาชิกของเวิร์กกรุ๊ปชื่อ 'WORKGROUP' ผลลัพธ์มีความเป็นอิสระจากระบบปฏิบัติการของเซิร์ฟเวอร์ (ไม่ว่าจะเป็น Windows หรือ Wether นั่นคือ Linux / Samba) และเป็นที่ทราบกันดีว่าบางครั้งเซิร์ฟเวอร์สมาชิกของ Windows จำนวนมากเป็นส่วนหนึ่งของโดเมนที่ควบคุมโดย Samba หรือเวิร์กกรุ๊ป [ใช่มันเกิดขึ้นที่ชื่อเวิร์กกรุ๊ปเริ่มต้นของแซมบ้าคือ 'WORKGROUP' ... แต่งั้นเหรอ ??] - แต่คำถามคือ'ฉันจะรู้จักเซิร์ฟเวอร์ SMB (Samba?!?) ทั้งหมดในเครือข่ายของฉันได้อย่างไร'


ควรทำเครื่องหมายเป็นคำตอบที่ถูกต้อง
rbellamy

4
ใช้คำแนะนำเหล่านี้อย่างน่าสนใจฉันเห็น Samba ที่ใช้ร่วมกันบนเซิร์ฟเวอร์ที่ฉันกำลังใช้งานอยู่เท่านั้น ในการตรวจสอบเซิร์ฟเวอร์ Samba อื่น (มีเวิร์กกรุ๊ป WORKGROUP) ฉันต้องเรียกใช้nmblookup -S WORKGROUP.. ไม่แน่ใจว่าจะแสดงรายการเซิร์ฟเวอร์ใดได้อย่างไรnmblookup -S '*'และคำสั่งอื่น ๆ จะส่งคืนเซิร์ฟเวอร์ภายในตามที่กล่าวไว้ข้างต้นเท่านั้น
davidhq

สำหรับฉันยังคำตอบอื่น ๆ ทำงานได้ดีขึ้น แต่ไม่ถูกต้อง nmblookup -S '*'ส่งคืนเฉพาะโลคัลเซิร์ฟเวอร์ อาจต้องการข้อมูลเพิ่มเติม ... SAMBAจะส่งคืนเซิร์ฟเวอร์แซมบ้าเท่านั้นในขณะที่ฉันต้องการแชร์ SMB ทั้งหมด (รวมอยู่ใน windows) อย่างน้อยฉันก็พบหน้าต่างแชร์ซึ่งเป็นส่วนหนึ่งของ WORKGROUP ฉันไม่แน่ใจว่าทำไมเอะอะถึง samba / smbd ทั้งหมดและทำไมคำตอบนี้ถึงได้คะแนน
เฟรด

@ เฟรด: คำตอบบอกไว้อย่างชัดเจน (ไม่ชัดเจนเพียงพอ!!) ว่า (1) เมื่อ__SAMBA__คุณได้รับเซิร์ฟเวอร์Sambaและ (2) เมื่อ'*'คุณได้รับเซิร์ฟเวอร์SMB ทั้งหมด คำตอบนี้ได้รับคะแนนเพราะมันถูกต้อง
Kurt Pfeifle

ฉันแค่บอกว่านี่ไม่ทำงานบนคอมพิวเตอร์ของฉัน ฉันใช้ Ubuntu 16.04, nmblookup จากแพ็คเกจ samba-common-bin 2: 4.3.8 + dfsg-0ubuntu1 อาจมีบางอย่างผิดปกติกับสภาพแวดล้อมของฉัน หรือการถดถอยในเครื่องมือมันนานแล้วที่คำถามนี้ได้รับคำตอบ ความคิดเห็นก่อนหน้าแสดงให้เห็นว่าฉันไม่ได้เห็นพฤติกรรมนี้เพียงอย่างเดียว
เฟรด

12

คุณอาจต้องปรับแต่งการตั้งค่าไฟร์วอลล์ในการติดตั้งเริ่มต้น
Ophidian

2
ฉันจะลงคะแนนคำตอบนี้ - ฉันไม่อยากเชื่อเลยว่าคำตอบที่ผิดจะได้รับ 2 upvotes คำสั่งที่กำหนดจะแสดงเฉพาะเซิร์ฟเวอร์ที่เป็นสมาชิกของเวิร์กกรุ๊ปที่ชื่อ "เวิร์กกรุ๊ป" และมันจะแสดงรายการโดยไม่คำนึงถึงระบบปฏิบัติการ (Samba / Linux หรือไม่, Windows หรือไม่) คำถามเกี่ยวกับการทำความรู้จักกับเซิร์ฟเวอร์SAMBAทั้งหมดในเครือข่ายท้องถิ่น (ไม่คำนึงถึงชื่อเวิร์กกรุ๊ป)
Kurt Pfeifle

7
ที่จริงแล้วเขาไม่ได้บอกว่าเขากำลังมองหาเซิร์ฟเวอร์แซมบ้าทั้งหมด เขากล่าวว่า "เซิร์ฟเวอร์ smb ทั้งหมด" ฉันคิดว่าฉันล้มเหลวในการอธิบายรายละเอียดในระดับที่คุณทำในการที่คุณสามารถค้นหากลุ่มตัวแทน - แต่จริงๆแล้วฉันทำให้ชัดเจนว่าฉันกำลังอ้างอิงคู่มือและฉันได้รับ OP สิ่งที่เขาต้องการ ไม่ต้องพูดถึงฉันตอบครึ่งเดือนก่อนที่คุณจะ - ฉันไม่เข้าใจสิ่งที่คุณก้มออกจากรูปร่างเกี่ยวกับ
andyortlieb

10

ในเครือข่ายของฉัน - ในขณะที่เขียน (สิ่งที่เปลี่ยนแปลง) - smbtree เป็นทางออกที่ต้องการของฉัน มันขอรหัสผ่านของคุณ (หมายถึงรหัสผ่าน Samba ของคุณ) จากนั้นจะให้รายการที่มีรายละเอียดที่มีชื่อ netbios หุ้นที่มีอยู่และคำอธิบายการแชร์

ในทางกลับกัน nmblookup ไม่ได้แสดงรายการการแชร์ที่มีอยู่ทั้งหมดในเครือข่ายของฉัน ฉันไม่รู้ว่าทำไมถึงไม่ได้ แต่ก็ไม่เป็นเช่นนั้น

จากหน้าคน smbtree:

smbtree เป็นโปรแกรมเบราว์เซอร์ smb ในโหมดข้อความ มันคล้ายกับ "Network Neighborhood" ที่พบในคอมพิวเตอร์ Windows มันพิมพ์ต้นไม้ที่มีโดเมนที่รู้จักทั้งหมดเซิร์ฟเวอร์ในโดเมนเหล่านั้นและใช้ร่วมกันบนเซิร์ฟเวอร์

คำสั่ง nmblookup มีสวิตช์และตัวเลือกเพิ่มเติม หน้าคน nmblookup : หน้าคน nmblookup

ตั้งข้อสังเกตสำหรับลูกหลาน - ตามที่คำตอบเหล่านี้ติดอยู่ - และอย่างที่ฉันพูดฉันพบว่า smbtree จะเป็นคำตอบที่ดีกว่าสำหรับ OP บนเครือข่ายของฉัน


ผลลัพธ์ของ smbtree นั้นยอดเยี่ยมมาก! - หวังว่ามันจะไม่ขอ PWD ของฉันเมื่อฉันลงชื่อเข้าใช้รูทโทไม่เคยเห็นมาก่อน!
FreeSoftwareServers

@FreeSoftwareServers ลองดูsmbtree -Nว่าคุณกำลังมองหาบริการที่ไม่ต้องการรหัสผ่านหรือไม่
เบ็นซี

ฉันเข้าใจว่ามันต้องการรหัสผ่าน SMB ไม่ใช่รหัสผ่านรูทของฉันพวกเขามีแนวโน้มที่เหมือนกัน แต่ใช่ฉันมีการ จำกัด การใช้ร่วมกับที่อยู่ IP ที่ไม่ใช่ dhcp แต่ไม่มีรหัสผ่าน
FreeSoftwareServers

4

วิธีที่ดีกว่าพิมพ์โหดมากขึ้นคือการใช้ smbtree

$ smbtree
Enter user01's password: DOMAIN_A
        \\FREEBOX_SERVER                Freebox Server
                \\FREEBOX_SERVER\IPC$                   IPC Service (Freebox Server)
                \\FREEBOX_SERVER\Disque dur             AutoShare of fbxhdiskd partition 2

1
@ Corvus-B ได้แนะนำแล้วsmbtreeในคำตอบนานก่อน
4838962

3

อีกวิธีในการทำเช่นนี้คือผ่าน Avahi (Bonjour) ตราบใดที่เซิร์ฟเวอร์ยังเผยแพร่:

avahi-browse -r _smb._tcp

3

ใน samba เวอร์ชั่น 4 nmblookup '*'ไม่สามารถใช้งานได้อีกต่อไป; มันให้เฉพาะเซิร์ฟเวอร์ท้องถิ่น มันเคยทำงานใน samba เวอร์ชั่น 3

ตอนนี้คุณต้องใช้nmblookup WORKGROUPซึ่งดังที่ Kurt กล่าวถึงส่งคืนเซิร์ฟเวอร์ในเวิร์กกรุ๊ปWORKGROUPเท่านั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.