[Çözüldü] Bash betiğini çalıştırırken "izin verilmedi" hatası alıyorum

Başlatan edge35, 07 Mayıs 2017 - 00:01:35

« önceki - sonraki »

0 Üyeler ve 2 Ziyaretçi konuyu incelemekte.

edge35

Alıntı yapılan: aysberg313 - 10 Ocak 2016 - 08:06:25
Örnek olarak;

#!/bin/bash

# Bu script, Paket listelerini günceller, yükseltme işlemini gerçekleştirir,
# dağıtım yükseltir, kullanılmayan paketleri kaldırır, indirilmiş olan eski
# arşiv dosyalarını siler.

echo "1.) apt-get update"
echo "2.) apt-get upgrade"
echo "3.) apt-get dist-upgrade"
echo "4.) apt-get autoremove"
echo "5.) apt-get autoclean"
echo "6.) Hepsi"
echo "7.) Çıkış"

echo -n "Lütfen yapılacak işlem numarasını giriniz: "
read islem

case $islem in
1)
apt-get update
;;
2)
apt-get upgrade
;;
3)
apt-get dist-upgrade
;;
4)
apt-get autoremove
;;
5)
apt-get autoclean
;;
6)
apt-get update && apt-get upgrade && apt-get dist-upgrade && apt-get autoremove && apt-get autoclean
;;
7)
exit
;;
*)
echo "Hatalı seçenek!!!"
;;
esac




Alıntıdaki betiği çalıştırınca aşağıdaki hatayı veriyor, yardımcı olabilir misiniz?
$ ./coklu.sh
bash: ./coklu.sh: Permission denied


Sorunlarımı çözerken her şeyiyle öğrenmeye çalışıyorum. Bana balık verenden Allah razı olsun, ama bana balık tutmayı öğretenden Allah daha çok razı olsun :)

siberoloji

#!/bin/bash

# Bu script, Paket listelerini günceller, yükseltme işlemini gerçekleştirir,
# dağıtım yükseltir, kullanılmayan paketleri kaldırır, indirilmiş olan eski
# arşiv dosyalarını siler.

echo "1.) apt-get update"
echo "2.) apt-get upgrade"
echo "3.) apt-get dist-upgrade"
echo "4.) apt-get autoremove"
echo "5.) apt-get autoclean"
echo "6.) Hepsi"
echo "7.) Çıkış"

echo -n "Lütfen yapılacak işlem numarasını giriniz: "
read islem

case $islem in
1)
sudo apt-get update
;;
2)
sudo apt-get upgrade
;;
3)
sudo apt-get dist-upgrade
;;
4)
sudo apt-get autoremove
;;
5)
sudo apt-get autoclean
;;
6)
sudo apt-get update && apt-get upgrade && apt-get dist-upgrade && apt-get autoremove && apt-get autoclean
;;
7)
exit
;;
*)
echo "Hatalı seçenek!!!"
;;
esac

Bir de böyle deneyin.

lrnyrd

[mention=624858]@edge35[/mention] sudo ile yada chmod +x ile doyaya yönetici izni vermen gerekiyor.
Sometimes even good memories can kill you!

edge35

[mention=624863]@siberoloji[/mention] o şekilde denemiştim fakat yine de olmamıştı eğer o sırada benden kaynaklı bir hata olmadıysa.
[mention=624864]@lrnyrd[/mention] teşekkür ederim, bilgisayara geçince deneyeceğim. Muhtemelen chmod + x ile çözülür diye düşünüyorum.
Fakat neden sudo ile olmadı, bir fikriniz var mı?


Sorunlarımı çözerken her şeyiyle öğrenmeye çalışıyorum. Bana balık verenden Allah razı olsun, ama bana balık tutmayı öğretenden Allah daha çok razı olsun :)

siberoloji

Aşağıdaki çıktı örneğinde olduğu gibi betiğin kopyalanıp dosyaya yapıştırılıp kaydedildikten sonra executable (x) hale getirilmesi lazım.
ls -l gitadd.sh
-rwxr-xr-x 1 umut umut 116 May  5 00:40 gitadd.sh

Betiğin adına betik.sh dersek
chmod +x betik.sh
kodunuzu çalıştırılabilir hale getirir. Çalıştırmak içinde
./betik.sh
komutunu verebilirsiniz. Ancak, betiğin içindeki apt-get komutları, sudo olmadan "permission denied" hatası verirler.
Bence siz yine de olmazsa
ls -l betik.sh
çıktısını paylaşın, bakalım.

lrnyrd

Evet [mention=624868]@siberoloji[/mention] dediği gibi betiğin içindeki apt-get komutları sudo olmadığı için her halükârda izin hatadı verecek [mention=624868]@siberoloji[/mention] nin veridiği betiği kullanıp buna chmod +x ile yetki verip tekrar deneyin.
Sometimes even good memories can kill you!

edge35

[mention=624868]@siberoloji[/mention] [mention=624870]@lrnyrd[/mention] teşekkür ederim.
chmod +x betik.sh sonrasında çalıştırdığımda Lütfen yapılacak işlem numarasını giriniz: 4
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
çıktısını verdi. Ben de sonucunu merak ettiğim için sudo ./betik.sh şeklinde denedim, sıkıntısız çalıştı.
Ardından betik içinde sudo'ları ekleyerek tekrar denedim. Sorunsuz çalıştı.

Son olarak $ ls -l coklu.sh
-rwxr-xr-x 1 muhammed muhammed 873 May  7 01:08 coklu.sh
izinler şuan olmuş halde. Bir de son çıktıdaki "873" sizinkinde de "116" sayıları ne anlama geliyor?


Sorunlarımı çözerken her şeyiyle öğrenmeye çalışıyorum. Bana balık verenden Allah razı olsun, ama bana balık tutmayı öğretenden Allah daha çok razı olsun :)

siberoloji

Çünkü benim gitadd.sh isimli betik dosyam 116 byte büyüklüğünde. Sizin coklu.sh dosyanızın boyutu ise 873

edge35

Teşekkür ederim. Başka bir sorum kalmadı. Şimdilik :)


Sorunlarımı çözerken her şeyiyle öğrenmeye çalışıyorum. Bana balık verenden Allah razı olsun, ama bana balık tutmayı öğretenden Allah daha çok razı olsun :)

lrnyrd

Sometimes even good memories can kill you!