Bir NFS uzaktan kumandasının bir dizini dışa aktarıp aktarmadığını nasıl belirleyebilirim?


11

Senaryomda, birkaç durum katmanı var:

  1. uzaktan kullanılabilir (ping)
  2. uzak NFS servisi etkin
  3. uzak NFS belirli bir dizini dışa aktarıyor
  4. uzak NFS takılı (takılı)

(2) ve (3) rcpinfoiçin en iyi bahis olduğuna inanıyorum . (2) olsa da, bir alt kabuk (bu uygulama için kabul edilemez) başlatmadan sorgu NFS hizmetine daraltmak nasıl anlayamıyorum. (3) için, bu bilgilerin uzaktan bile mevcut olduğundan emin değilim ssh(tabii ki içeri girmeden ).

RHEL 6 üzerinde çalışıyorum ve standart dağıtımda yer almayan programlara erişimim yok.

Yanıtlar:


16

3) için showmount -e remote_nfs_server, remote_nfs_server'ın bir şey dışa aktarıp aktarmadığını gösteren muhtemelen kullanmak istersiniz .

Ve 2 için) shubshell kullanmak istemiyorsanız ve uzak sunucunun NFSv3 veya NFSv4 çalıştırıp çalıştırmadığını öğrenmek ve TCP veya UDP varsa, bunu özellikle rpcinfo ile sorgulayabilirsiniz:
rpcinfo -u remote_nfs_server nfs 3 UDP üzerinden NFSv3 ve
rpcinfo -t remote_nfs_server nfs 4TCP üzerinden NFSv4 için

4) için, klasörün bağlı bir uzak dosya sistemi olup olmadığını kontrol etmek isteyebilirsiniz.


Daha fazla bilgi:


showmount -r remotebana bir şeyremote ihraç edip etmediğini söyleyecek , ancak bir alt kabuk (yani bir boru hattı) başlatmadan ihraç edilip edilmediğini belirlememin bir yolu var mı? remote:/mnt/dir
Sean Allred

showmount -e remotebir remoteşey ihraç edip etmediğini söyleyecektir . showmount -rbu seçenek olmadığından size yalnızca bir hata mesajı verir. Showmount çıktısında normal bir ifade için temelde grep ile eşleşen kabuk alt dizesini kullanmayı deneyebilirsiniz. Belki bir göz atın örneğin stackoverflow.com/questions/12619720/…
doktor5000

Ya da başka bir şekilde koymak, özellikle belirli bir mount için uzak bir NFS sunucusunu sorgulayabilirsiniz herhangi bir bağımsız komut bilmiyorum ve bunun var olduğunu düşünmüyorum. Yalnızca diğer iki geçerli yol, uzak sunucuyu yerel olarak ssh aracılığıyla sorgulamak olacaktır (ancak o zaman bile , belirli bir dizinin şu anda NFS'nin vatansız yapısı nedeniyle dışa aktarılıp aktarılmadığını belirlemenin güvenilir bir yolu yoktur ). Diğer yaklaşım, NFS dışa aktarımını istemciden bağlamaya çalışmak ve çıkış kodunu, ardından yerel bağlamayı ve içeriğini kontrol etmek olabilir.
doktor5000

Seçene -rkarşı hatam -e- demek istediğim bu :) Daha önce 'girişim yaklaşımı' önerilmişti. Özellikle sevmiyorum, ama gerçek bir seçenek gibi görünüyor.
Sean Allred

5

showmount -e <server># 3'ün bazı yönleri için kullanabilirsiniz . Dışa aktarma işlemleri basit olduğunda, en azından bir dizinin (veya belki de böyle bir dizinin üst öğesinin) dışa aktarılmasını önerir.

# showmount -e server
/export                               (everyone)

# 2 için, ne aradığından emin değilim. NFSv3 kullanıyorsanız, en azından mount ve nfs'yi ararsınız (ve bazı durumlarda kilit yöneticilerini onaylamak isteyebilirsiniz). Dediğiniz gibi rpcinfo ile herhangi bir açıkça kontrol edebilirsiniz.

# rpcinfo -t server mountd 3
program 100005 version 3 ready and waiting

showmount -r remotebana bir şeyremote ihraç edip etmediğini söyleyecek , ancak bir alt kabuk (yani bir boru hattı) başlatmadan ihraç edilip edilmediğini belirlememin bir yolu var mı? remote:/mnt/dir
Sean Allred

Bu, hizmetinizdeki tesislere bağlıdır. Senaryonuz ne yazıyor? Ayrı bir yürütülebilir dosya (showmount) başlatmak neden başka bir kabuk başlatmaktan daha az sorun?
BowlOfRed

Senaryomu Python 2.6'da yazıyorum ve subprocessmodülü kullanıyorum . Bununla bir boru hattı kurabilirim, ancak tasarımı o kadar karmaşık hale getirmemeyi tercih ederim. Senaryonun incelikle öldürülmesine izin vermek için bir alt kabuk başlatmaktan kaçınmalıyım - eğer öldürülürse, çocuk süreçleri öldürülecek, ancak çocuk süreçlerinin çocukları değil . Böylece, alt kabuk öldürülür, ancak alt kabuğun ortaya çıktığı süreçler öldürülmez. Ayrıca, rpcinfogeri dönüşü olmayan şey için orijinal temel olan geri dönmek için üç dakika sürebileceğini de belirttim . Yine de bunu değiştirmek için çok geç.
Sean Allred

İhtiyacınız olanı yapan ayrı bir komut dosyası yazın (showmount çağrıları gibi, ancak dizin için bir argüman alır ve başarı / başarısızlık döndürür ve amaçlarınız için makul bir zaman aşımı içerir), ardından bu komut dosyasını python'unuzdan çağırın.
BowlOfRed

Size hemen düşündüğünüz kadar kolay olmadığını söyleyebilirim - kilitlendiğinde, rpcinfoSIGKILL'den (bu bir yanlış dağıtımdır - işletim sistemi sadece süreci öldürür) başka hiçbir şeye cevap vermez. Her halükarda, bu hala başlamak için bir kabuk başlatacaktır rpcinfo- altta yatan sorun devam etmektedir.
Sean Allred

0

Tüm sahte kök NFS-V4 dışa aktarma dizinlerini listele

ls /net/ip-addr-nfs-server

Cevabımı başka bir başlıkta kontrol et


Bir /netbağlantının çalışması için /etc/auto.netkomut dosyasının sunucunun karşılık gelen bir dışa aktarımı olduğunu belirlemesi gerekir. Bu showmountkomutu kullanır . Sunucuda yalnızca NFSv4 varsa, çalışmaz (showmount görüntülenir RPC: Program not registeredve /net/serverrapor verir File not found)
Ale
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.