[ÇÖZÜLDÜ] Başlangıçta automount hatası


(Musa Ortagedik) #1

Arkadaşlar 2 gün önce ağ konumunu sisteme nasıl bağlayacağımız hakkında bir nasıl belgesi yayınlamıştım ardından şirkette kendi cihazımda halen kullanmakta olduğum şekilde gayet sorunsuz çalışırken diğer başka bir cihazda sudo mount -a ile elle çalışırken, sistem açıldığında otomatik mount etmiyor yardımcı olabilir misiniz nasıl aşarım bu sorunu? Ağ üzerinde çalışan uygulamam var ve çalıştıramıyorum. Durum acil.

Düzenleme-1;
Arkadaşlar konuyu başka forumlarda araştırdım. Bir döngüden bahsetmişler. Sayılı bir döngü. Ağ bağlantısı geç kurulan cihazlarda ağ sürücüsü mount sorunu yaşanırmış. Aşmak için bir adet kabuk betiği dosyası yazmak gerekiyormuş. Acaba yazabilecek var mı benim bilgim hiç yok. Bana java de yada c# de yazayım ama kabuk betiği hiç yazmadım ve benim öğrenip yazmam en az 1 hafta sürer. İşim acil olmasa kendim öğrenir yazarım. Yapılacak iş çok basit 2 şer saniye ara ile internet bağlantısını kontrol edecek mesela www.google.com adresine ping atacak bir döngü. Eğer bağlantı varsa sh mounter.sh ile bir kabuk betiği (yada mounter.sh içindeki kodları da taşıyabiliriz) çalıştıracak. Bir kere yaptırmak basit ping attırabiliyorum bağlantı onayı gelince de çalıştırıyorum ama 2 şer saniye arayla en az 10 kez yapacak ve bağlantı geldiğinde de artık döngüden çıkıp ping atmayı kesecek şekilde yapamam. Yani 10 kez tekrarlama ve bağlantı 3. kez tekrarda geldi diyelim döngüden çıkması gerekir. Dediğim gibi kabuk betiği hiç yazmadım. Yardımlarınızı bekliyorum.

Düzenleme-2;
Kabuk betiğini kendi uğraşlarım ile yazdım testini yapınca buradan sonucunu yazarım. Herkese kolay gelsin.


(𝗄𝖺𝖺𝗇) #2

Masaüstüne isminde bir dizin oluşturun (Örn: payort ).
sudo nano /etc/fstab ile açılan editöre aşağıdaki satırda düzenlemelerinizi yapıp yapıştırın. CTR+O ENTER CTRL+X tuşları ile kadedip kapatın ve sudo mount -a ile bağlanıp bağlanmadığını test edin.

//10.6.5.191/ort /home/kaan/Masaüstü/payort cifs dom=workgroup,username=ali,password=123,rw,iocharset=utf8,sec=ntlm 0 0

10.6.5.191: paylaşım yapan bilgisayar
ort: paylaşılan dizin
ali:paylaşım yapan bilgisayardaki kullanıcı adı
123:paylaşım yapan bilgisayardaki kullanıcı şifresi


(Musa Ortagedik) #3

Kaan Bey konunun nasıl belgesini zaten ben hazırladım siz problemi hiç anlamamışsınız :frowning:


(Musa Ortagedik) #5

Arkadaşlar kendi uğraşlarım sonucu problemimi çözdüm. Lazım olana da faydası olsun diye paylaşıyorum. Aslında bu lazım olana değil ağ klasörü bağlayan herkese lazım. Çünkü anlık olarak bir kesinti yada ağı geç algılama (ağ hızından dolayı) vb. şeyler olduğu zaman mount işlemi maalesef geçersiz kalıyor bu sebepten dolayı gecikmeli mount işlemi daha sağlıklı gibi duruyor. İlk olarak bir dosya oluşturalım, uçbirim açarak içerisine şu kodu yazıyoruz;
sudo nano /etc/init.d/AutoMount4NetworkDir
açılan boş sayfaya şu kodları yapıştıralım;

#!/bin/bash

#BEKLEME SÜRESİ
BEKLEME=2

#Döngü (bağlanamadığı takdirde 10 kez tekrarlanacak)
for i in 1 2 3 4 5 6 7 8 9 10
do
echo -e "GET http://google.com HTTP/1.0\n\n" | nc google.com 80 > /dev/null 2>&1

#eğer bağlantı başarılı olursa ağ konumu mount edilecek
#başarısız olursa yeniden denenecek
if [ $? -eq 0 ]; then
sh -c "echo "kullanıcışifreniz" | sudo -S mount -a"
break
else
echo "$i. Kez Yeniden Denenecek..."
fi

#her döngüden sonra 2 saniye bekleme süresi verildi.
#Çünkü 10 kez deneniyor olması toplamda 20 saniyelik bir zaman kazandırır.
sleep $BEKLEME
done

Kodlarda zaten gerekli açıklamaları yaptım. Şimdi bu dosyada kullanıcı şifreniz yazan yere kendi şifrenizi yazıp CTRL+O ardından ENTER ve sonra da CTRL+X tuşlarıyla kaydedin. Whisker Menü’den ‘Oturum ve Başlangıç’ diye aratıp bulduğunuz başlangıç yöneticisini açarak, ‘Uygulama Otomatik Başlat’ sekmesine geçip altta bulunan ‘Ekle’ butonuyla yeni bir otomatik başlatma seçeneği açıyoruz. En üst boşluğa kendinize göre bir isim yazın ve en alttaki metin kutusunun sağ tarafında bulunan yukarı oka basarak da /etc/init.d/ adresinde bulunan AutoMount4NetworkDir dosyasını seçerek kaydedip kapatıyoruz. Artık cihazımızı yeni açtığımızda mount işlemini otomatik yapacaktır. 20 saniyelik bir sürede de ağ bağlanmış olacaktır ve işlemimiz tamam. Teşekkürlerinizi eksik etmeyin. Herkese kolay gelsin.

Soru: Sayın Pardus geliştiricileri bu bash komutlarında for döngüsünün yanında bulunan 1 den 10 a kadar olan sayıları tek tek yazmak yerine {1…10} yazıp kaydettiğim zaman çalışmamakta. Acaba sebebi nedir nasıl çalıştırabilirim? Değerli cevaplarınız için teşekkürler… ({1…10} aradaki noktalar 2 adet. Forumda 3 çıkıyor)


(Yunusemre Şentürk) #6

Merhaba @RTSoft bey, daha pratik bir çözüm lazım olursa;

#!/bin/bash
# author yunusem

if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi

check_network() {
    ping -q -w 1 -c 1 `ip r | grep default | cut -d ' ' -f 3` > /dev/null 2>&1 && return 0 || return 1
}

mount_all() {
   echo "Mounting all..."
   mount -av
}

while ! check_network
do
    echo "No internet"
done

echo "Got internet"
mount_all

Kolay gelsin.


(Musa Ortagedik) #7

Merhaba @Yunusemre Bey, elinize sağlık güzel bir programlama. Fonksiyonlar işin içine girince gerçekten güzel sözdizimi elde ediliyor. İnceledim kabuk betiğinizi while ile sonsuz döngü kurmuşsunuz. Net yok olduğu sürece while değeri doğru olur ve while döngüden çıkamaz bu sayede sürekli netin durumunu kontrol eder. Evet gerçekten çok hoş. Yani net ne zaman gelirse gelsin hemen bağlar. 20 saniye değil 3 dk sonra gelse de çalışır. Root yetkileriyle çalıştırmak için benim yazdığım betikteki gibi şifre girmemiz gerekiyor sanırım başlangıca eklemebilmemiz açısından değil mi?


(Yunusemre Şentürk) #8

Merhaba @RTSoft bey, eğer oturum açıldıktan sonra olsun istiyorsanız root un çalıştırdığı yerlere eklemeniz yeterli örneğin /etc/xdg/autostart/ altına hazırladığınız betiği çağıran bir .desktop uzantılı dosya ekleyerek.

Kolay Gelsin.


(Musa Ortagedik) #9

/etc/autostart diye bir dizin yok ama /etc/auto.mymount diye bir dosya var o ne işe yarıyor içi boş duruyor. Ne yapmam gerekiyor.


(Yunusemre Şentürk) #10
/etc/xdg/autostart

olacak o editledim. Oradaki .desktop uzantılı olanları inceleyebilirsiniz.


(alpersel) #11

Merhaba,
betiği init.d altında oluşturmamıza gerek varmı. yoksa sadece /etc/xdg/autostart altına
test.desktop diye oluşturmamız yeterlimi

iyi çalışmalar


(system) #12