2020-03-01

Kodi Youtube eklentisi hatası

Raspberry PI Kodi üzerinde kurulu Youtube eklentisi bir süredir hata veriyordu. Anlam veremediğim hata ile ilgili internette yaptığım aramada Youtbe eklentisinin geliştiricisinin uygulama API anahtarları artık geçerli olmadığını öğrendim. OSMC formundaki bir başlıkta gördüğüm fzinken kullanıcısının çözüm önerisi başarılı sonuç verdi. Adımlar şöyle:

Google hesabınız ile https://console.developers.google.com/ adresine giriş yapın ve yeni proje yaratmayı seçin. Projeye bir isim verin.
Daha sonra API kütüphanesine giderek API ve hizmetleri etkinleştirin.
Youtube Data API v3'ü seçin
Etkinleştiri seçin
Yeni kimlik bilgisi oluşturmayı seçin
Kimlik bilgisi tercihlerini şöyle yapabilirsiniz:
Nihayetinde 1 API anahtarı ve 1 OAuth 2.0 istemci kimliği yaratmanız gerekecek. OAuth 2.0 istemci kimliğinin altında bir de istemci sırrını bulacaksınız. Bunları bir yere kopyalayın.

Kodi'de Youtube eklentisinin ayarlarına gelerek sol menüde altlarda yer alan API sekmesini seçin. Burada eğer henüz etkinleştirilmemişse Enable Personal API keys'i etkinleştirin. Ardından altında yer alan 3 alana şu verileri girin:

API Key: yukarıda belirttiğim API anahtarı
API ID: OAuth 2.0 istemci kimliği
API secret : OAuth 2.0 istemci sırrı

Bunları girdikten sonra youtube eklentisi çalışacak :)

Bu uzun karakterleri tek tek yazmak zor, eğer Rasberry PI kullanıyorsanız Kore veya Yatse kullanabilirsiniz, kopyalayıp uzaktan yapıştırmak için.

2020-02-25

COSLAT logları

5651 sayılı kanuna göre hotspot olarak kullanılan Coslat cihazı, üzerindeki logları hiç silmeden saklıyordu. KVKK kapsamında bu logların sadece son 6 ayını saklamamız gerekiyordu. Coslat'ın üzerinde bunu sağlayacak bir ayar bulamadım. Bunun için küçük bir script yazarak bunun periyodik olarak çalıştırılmasını sağladım.

Öncelikle Coslat üzerinde loglar /var/log/imzalikayitlar klasöründe 5651portal, 5651dhcp ve 5651url klasörlerinde saklanıyor. Linux find komutunun son 6 aydan daha eski dosyaları/klasörleri bulmak için şöyle bir kullanımı var:
find /var/log/imzalikayitlar/5651url -type d -mtime +180
Bu burada
-type d : sadece klasörleri bul
-mtime +180 : son değiştirilme tarihi 180 günden öncekileri bul. Artı işaretini kullanmadan 180 yazılırsa tam 180 gün önce değiştirileni bulur. -180 yazılırsa son 180 gün içinde değiştirilen dosyaları bulur.
Buna bir de -exec parametresini ilave edersek

find /var/log/imzalikayitlar/5651url -type d -mtime +180 -exec rm -rf {} +

bu şekilde 180 günden önce değiştirilmiş dosyaları silecektir. Ben bu satırı hem 5651dhcp hem de 5651portal alt klasörleri için de yaptım. Sonlandırma olarak \; yazınca dosyaları siliyordu, ama yine de dosyalar bulunamadı diye hata veriyordu. Bunun yerine +'yı kullandım. Nihayetinde /root altında coslat.sh dosyası oluşturup içine şu satırları ekledim:

find /var/log/imzalikayitlar/5651portal -type d -mtime +180 -exec rm -rf {} +
find /var/log/imzalikayitlar/5651dhcp -type d -mtime +180 -exec rm -rf {} +
find /var/log/imzalikayitlar/5651url -type d -mtime +180 -exec rm -rf {} +

Sonra da bir zamanlanmış görev oluşturabilmek için
# crontab -e

komutunu vererek boş bir editör sayfasını açılmasını sağlayarak içine şu satırı girdim:

1 0 1 * * sh /root/coslat.sh

Burada sırasıyla:
1: dakika (0-59)
0: saat (0-23)
1: Ayın kaçıncı günü (0-31)
*: Hangi ay (1-12 [12:Aralık])
*: Haftanın günü (0-7 [0 ve 7: Pazar, 1: Pazartesi])
yani kısaca her ayın 1'inde saat 00:01'de /root/coslat.sh komutunu sh ile çalıştır diyorum. Kullandığımız komut bir parametreye ihtiyaç duyuyorsa bunu satırın devamına yazabiliriz.

2024-12-05 ek: SSH ile bağlanmak için

ssh admin@IP-adresi

yazmak yetmeyebilir. Eğer

ssh no matching host key type found. Their offer: ssh-rsa,ssh-dss

gibi bir hata alıyorsak ssh ile bağlanırken 

-oHostKeyAlgorithms=+ssh-dss

eklemek çözümlerden biri olabilir. Yani tam bağlantı komutu şöyle birşey olmalı:

ssh admin@IP-adresi -oHostKeyAlgorithms=+ssh-dss

Bağlandıktan sonra shell'e geçmek için

shell

yazmak gerekcek.

[1] https://stackoverflow.com/questions/6085156/using-semicolon-vs-plus-with-exec-in-find
[2] https://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/

2019-12-22

Clam antivirüs kullanım

Linux makinemde bir antivirüs yüklü değil. Ama indirmek zorunda olduğum dosyaların bir genel taramasını yapabilmek için clam'e başvurdum. Kurmak için
sudo pacman -S clamav
kullandım. Ardından freshclam ile güncellemeden önce -V parametresiyle tanım dosyası sürümünü kontrol ettim:
$ sudo freshclam -V   # büyük V harfi ya da --version
ClamAV 0.102.1/25671/Sun Dec 22 12:58:12 2019

Ya da clamscan --version (ya da -V) da kullanılabilir.

Güncel. Güncel olmasaydı -V'yi kullanmadan güncelleştirebilirdim:

Şu sayfada clam hizmetlerini etkinleştirmekten bahsedilmiş.

sudo systemctl enable --now clamav-daemon
sudo systemctl enable --now clamav-freshclam

Taramak istediğim klasörü şu şekilde taradım:
sudo clamscan /klasor -r -l /home/metin/clam.log
Burada, tahmin edilebileceği gibi -r anahtarı tüm alt klasörleri de taramaya dahil etmesi için, -l ise /home/metin/clam.log adındaki dosyaya yapılan işlemlerin ve bulunan sonuçların loglarını yazmasını söylüyor.

Elle freshclam komutu verirsek journalctl loglarında aşağıdaki gibi bir satır yer alır:

PackageKit[1451]: in /1893_dabddcde for install-packages package clamav-freshclam;1.0.8-1.fc41;x86_64;updates was

clamav-freshclam hizmetini etkinleştirdikten sonra periyodik güncellemeler sonrasında ise

freshclam[3747]: ClamAV update process started at Sun Mar 16 19:35

gibi bir satır yer alır.

Daha ayrıntılı bilgi için  

https://wiki.archlinux.org/index.php/ClamAV#OnAccessScan

https://www.ubuntupit.com/how-to-install-and-use-clamav-antivirus-on-ubuntu-linux/

2019-11-01

Windows'da kapanma olaylarının takibi

Beklenmeyen kapanma. En çok merak edilen konulardan birisi. Evde veya işte, kişisel bilgisayar veya sunucu. Soru hep aynı. Neden kapanmış?

Aşağıdaki olayları bilgisayarın açılış ve kapanış saatlerini ve hatta nedenlerini görüntülemek için kullanabiliriz (hepsi System evenlog'da).

Event ID Source Message
6005EventlogThe Event log service was started.
6006EventlogThe Event log service was stopped.
6008EventlogThe previous system shutdown at <date time> was unexpected.
6009EventlogMicrosoft (R) Windows (R) 10.00. 19042 Service Pack 1 Multiprocessor Free.
(Sistemin açışında sürüm bilgisinin kaydını düşen bir olay. 6005, 6006 ve 6009 olayları aynı anda kayda düşmüş gibi gözükür)
6013EventlogThe system uptime is <seconds> seconds.
(Aslında açılış ve kapanışla ilgisi yok, sistemin kaç saniyedir açık olduğunu bildiren periyodik bir kayıt)
1074User32The process <process> (<computer>) has initiated the power off of computer <computer> on behalf of use
 <username> for the following reason: Other (Unplanned)
12Kernel-GeneralThe operating system started at system time <date time>
13Kernel-GeneralThe operating system is shuting down at system time <date time>
109Kernel-PowerThe kernel power manager has initiated a shutdown transition.
107Kernel-PowerThe system has resumed from sleep. (fast boot etkin olan Windows 10 sistemlerde kapanma yerine)
1Kernel-GeneralThe system time has changed to <datetime> from <datetime>.
Change Reason: System time synchronized with the hardware clock. (fast boot etkin olan Windows 10 sistemlerde açılma yerine)
42Kernel-PowerThe system is entering sleep.
Sleep Reason: Application API
41Kernel-PowerThe system has rebooted without cleanly shutting down first. This error could be caused if the system stopped responding, crashed, or lost power unexpectedly.
1Power Troubleshooter    
The system has returned from a low power state.
Sleep Time: ...
Wake Time: ....... (42/Kernel-Power olayı ile düşük güç moduna girmek ve bu olayla çıkmak)
19WindowsUpdateClientInstallation Successful: Windows successfully installed the following update... (tekrar başlatma gerekmeyen durumlarda)
20WindowsUpdateClientInstallation Failure: Windows failed to install the following update...
21WindowsUpdateClientRestart Required: To complete the installation of the following updates, the computer must be restarted. Until this...
22WindowsUpdateClientRestart Required: To complete the installation of the following updates, the computer will be restarted within 15 minutes...
27WindowsUpdateClientAutomatic Updates is now paused. (güncelleştirmelerin ardından yeniden başlatılana kadar hizmet durdurulur)
43WindowsUpdateClientInstallation Started: Windows has started installing the following update...
44WindowsUpdateClientWindows Update started downloading an update.
26Application PopupBir uygulamanın hata verdmesi veya kaldırılması sebebiyle tekrar başlatma gerektiğini bildiren çeşitli mesajlar    
1000    
Application Error

Bir uygulama beklenmeyen bir şekilde kapandığında. (bu olay Application Event Log'a yazılır)

Hatalı uygulama adı: dwm.exe, sürüm: 10.0.26100... 

1002Application Hang

Bir uygulama yanıt vermeyi bıraktığında. (bu olay Application Event Log'a yazılır)

0.0.0.0 sürümlü cs2.exe programı Windows ile etkileşimi durdurdu ve kapatıldı.



İlk 3 sırada listelenen 6005, 6006 ve 6008 olaylarının kaynağı neden eventlog? Çünkü bilgisayar düzgün bir şekilde başlatılırken ilk başlayan hizmet eventlog, düzgün kapanırken de en son durdurulan hizmet de eventlog hizmetidir. Ancak çalışma süresi boyunca bu hizmetler durdurulup tekrar başlatılabileceği için dikkatli davranmak gerekebilir.

Beklenmeyen bir kapanmayı (güç kesintisi, donanım arızası gibi) ile ilgili 6008/Eventlog, 1024/User32 ve 41/Kernel-Power olayları aranabilir.

Son 2 satırda yer alan 21/Windows Update Agent ve 26/Application Popup olayları ise tekrar başlatmanın kendisine değil, muhtemel sebebine dair bir bilgi içerebilir.

Powershell Get-WinEvent kullanarak sorgularken ProviderName olarak WindowsUpdateClient yerine ya "Microsoft-Windows-WindowsUpdateClient" yazmak, ya da "*WindowsUpdateClient" şeklinde wildcard kullanmak gerekir. Örneğin:
Get-WinEvent -ComputerName <bilgisayar> -FilterHashTable @{LogName="System";ProviderName="*WindowsUpdateClient"} -MaxEvents 10

Birkaç olay ID'sini ve sağlayıcı ismini bir arada kullanarak şu şekilde bir komut son 10 günde olup bitene göz atmak için faydalı olabilir.

Get-WinEvent -FilterHashTable @{LogName="System";ProviderName=("Microsoft-Windows-WindowsUpdateClient","User32","Microsoft-Windows-Kernel-General");Id=12,13,19,20,21,22,43,44,1074;StartTime=(Get-Date).AddDays(-10)} |Select TimeCreated, Id, Message |Format-Table -AutoSize -Wrap

Event ID'leri ile sınırlamadan, örneğin son 2 saatteki geniş bir olay zincirini incelemek için

Get-WinEvent -FilterHashTable @{LogName="System";ProviderName=("Microsoft-Windows-WindowsUpdateClient","User32","Microsoft-Windows-Kernel-General","Microsoft-Windows-Kernel-Power","Microsoft-Windows-Power-Troubleshooter");StartTime=(Get-Date).AddHours(-2)} |Select TimeCreated, Id, Message |Format-Table -AutoSize -Wrap

2019-10-31

KDE Plasma'da uygulamalar için açılışta başlama seçenekleri

KDE5 Plasma'da bir uygulamam bilgisayar her açıldığında otomatik başlıyordu. Sistem Ayarları>Başlatma ve Kapatma kısmında ya da ~/.config/autostart klasörünün altında bir giriş bulamadığım için bu uygulamanın nasıl her seferinde tekrar başladığını merak ettim. Biraz araştırdığımda şu linkte buldum ki bu arkadaş için otomatik başlamayı mümkün kılan şey, /usr/share/applications klasörü altında yaratılmış olan .desktop uzantılı bir dosyaymış. Bunu da buraya not etmiş olmak istedim.

Başka bir  autostart konumu da /etc/xdg/autostart (dnfdragora-updater buradan çalışıyor).

Şu adreste verildiğine göre tüm otomatik başlangıç konumlarının bir listesi şöyle olabilir:

~/.kde/Autostart
~/.kde/share/autostart
~/.config/autostart
~/.local/share/autostart
/etc/xdg/autostart
/usr/share/autostart

2019-10-22

Yeni WSUS sunucuya bağlanı sorunu

Mevcut WSUS sunucumuzu kaldırıp yerine yeni bir WSUS sunucu kurduk. Windows Workstation bilgisayarımda RSAT yüklüydü. Ama WSUS Administration Console'u açınca hata verip çıkıyordu. Sebebi eski WSUS sunucuyu bulamaması, yeni WSUS sunucunun da adını bilmemesi. Acaba benim bilgisayarımdaki WSUS MMC snap-in'ini nasıl sıfırlayabilirim diye düşünürken şu adreste verilen çözüm işime yaradı.
%appdata%\Microsoft\MMC
klasörünün altındaki wsus dosyasını silip Administration Console'u yeniden başlatınca bana tekrar yeni sunucunun adını sordu, girdim ve herşey normale döndü.

Windows komut satırı işleri

Linux'taki chown komutunun Windows'daki eşdeğeri takeown.exe. Bu araç ile komut satırından bir dosya veya klasörün, alt klasör ve dosyalarıyla birlikte sahipliğini alabiliriz. Örnek kullanım:
takeown /F <hedef> /r /d e
Burada:
/F <hedef> ile sahipliği alınacak dosya veya klasör olmalı.
/r hedefin bir klasör olması durumunda recursive olarak alt öğelerin de sahipliğinin alınması için
/d bir alt klasörde listeleme izni olmaması durumunda devam etmek için Y (veya Türkçe sistemlerde E), bu işlemi atlamak için N (veya Türkçe sistemlerde H)
Burada büyük küçük harf hassasiyeti yok, H ve h aynı.

Bir klasörü altındaki tüm öğelerle silmek için
del /f /q /s <hedef>

Buradaki
/f ile salt okunur dosyaları silmeye zorla
/q ile sessiz çalış, her silme işlemi için onay isteme!
/s altklasörleri de (subfolders) sil

Bir başka yöntem

 rmdir /s /q <hedef>

2023-09-13 Ek: Nokta ile biten bir dosyayı normal yöntemlerle silmek mümkün olmayabiliyor. Örneğin 

D:\Klasor\dosya1. 

gibi bir dosyamız varsa silmek için şu yol önerilmiş:

del "\\?\D:\Klasor\dosya1."