Unutulan XP yönetici şifresini sınırlı kullanıcıyla değiştirmek
by admin on Oct.12, 2009, under win
- Sınırlı kullanıcı hesabıyla giriş yapın ve XP açılış ekranı yerine komut satırıyla açılmasını sağlayın.
cd c:\WINDOWS\system32
mkdir gecici
copy logon.scr gecici\logon.scr
copy cmd.exe gecici\cmd.exe
rename logon.scr.backup veya del logon.scr
rename cmd.exe logon.scr
exit
- Bilgisayarı yeniden başlattıktan sonra karşılaşacağını komut satırı ekranında şifre değiştirme işlemini uygulayın.
net user [Yönetici Kullanıcı Adı] [yeni_sifre]
- Şifre değiştirme işlemini bitirdikten sonra, bilgisayarımızın eski halinde açılması için yaptığımız değişikliği geri alıyoruz.
cd c:\WINDOWS\system32\gecici
copy * “c:\WINDOWS\system32″
- Bilgisayarı yeniden başlattığımızda yeni yönetici şifresiyle çalışıyor olacaktır.
php’nin mail fonksiyonuyla gönderilen posta kaydını tutmak
by admin on Aug.28, 2009, under linux
php’nin mail() fonksiyonuyla gönderilen e-postalar varsayılan olarak tanımlı sendmail yazılımı vasıtasıyla gönderilir. Sendmail’in ayarlarından LOG düzeyini arttırsanız da hangi dosyadan veya hangi kullanıcı tarafından gönderildiğini bulamazsınız. Hele web sağlayıcısı olarak hizmet veren bir makinanız varsa hangi kullanıcı sizin kaynaklarınızı kullanarak önemsiz e-posta gönderiyor tespit etmek zordur. Akla gelen yöntemse php ile posta sunucusu arasında sendmail e köprü görevi üstlenen ve aynı zamanda kayıt tutan bir yazılım eklemek. Şöyle;
vi /usr/sbin/sendmail.spamkontrol
diyerek içine
#!/usr/bin/perl
# use strict;
use Env;
my $date = `date`;
chomp $date;
open (INFO, “>>/var/log/spam_log”) || die “Dosya Acilmadi ::$!”;
my $uid = $>;
my @info = getpwuid($uid);
if($REMOTE_ADDR) {
print INFO “$date – $REMOTE_ADDR ran $SCRIPT_NAME at $SERVER_NAME n \n”;
print ‘\n’;}
else {print INFO “$date – $PWD - @infon\n”;
print ‘\n’;}
my $mailprog = ‘/usr/sbin/sendmail’;
foreach (@ARGV) {
$arg=”$arg” . ” $_”;
}open (MAIL,”|$mailprog $arg”) || die “cannot open $mailprog: $!n”;
while () {
print MAIL;
}
close (INFO);
close (MAIL);
dosyayı kaydettikten sonra ;
chmod +x /usr/sbin/sendmail.spamkontrol
touch /var/log/spam_log
chmod 0777 /var/log/spam_log
Şeklinde gerekli yetkileri verdikten sonra isterseniz php.ini deki sendmail tarifini yeni dosyamız olan /usr/sbin/sendmail.spamkontrol olarak girebilirsiniz yada apache deki Virtual Host tanımına aşağıdaki gibi bir tanımlama girebilirsiniz.
php_admin_value sendmail_path '/usr/sbin/sendmail.spamkontrol'
Bu değeri herbir VirtualHost tanımına da girebilirsiniz. Apache'yi tekrar başlattıktan sonra /var/log/spam_log dosyasında ağaşıdaki örnek kayıt dosyası gibi çıktı alacaksınız.
[root@immortal ~]# tail /var/log/spam_log
Fri Aug 28 15:37:20 EEST 2009 - /home/testuser1 -
Fri Aug 28 15:45:01 EEST 2009 - /home/testuser2 -
Fri Aug 28 15:53:30 EEST 2009 - /home/testuser1 -
Fri Aug 28 15:57:43 EEST 2009 - /home/testuser1 -
Fri Aug 28 15:58:47 EEST 2009 - /home/testuser2 -
Fri Aug 28 16:21:21 EEST 2009 - /home/testuser2 -
Eğer log dosyanızın boyutu çok büyürse log rotasyonu için /etc/logrotate.conf dosyasına aşağıdakileri ekleyebilirsiniz.
# SPAM LOG rotation
/var/log/spam_log {
monthly
create 0777 root root
rotate 1
}
[MattF ve ramprage'e teşekkürler]
bind dns konfigürasyon kontrolü
by admin on Aug.26, 2009, under linux
BIND kurulumu içinde gelen iki faydalı komutla hazırladığımız konfigürasyon kontrolümüzü yapabiliriz.
# named-checkconf /etc/named.conf
named-checkconf komutuna parametre olarak konfigürasyon dosyamızın adresini girdiğimizde bulduğu hatayı gösterecektir. Eğer hiç çıktı vermezse konfigürasyon dosyamızda sorun yok demektir. DNS sunucumuzu yeniden yükleyebiliriz.
# named-checkzone cemdogan.com /var/named/cemdogan.com.zone
named-checkzone komutuna parametre olarak önce alan adını daha sonra zone dosyamızın adresini girdiğimizde hata bulursa bulduğu hatayı, hatasızsa “OK” çıktısını alabiliriz. Kontrolümüzü tamamladıktan sonra DNS sunucumuzu yeniden yükleyebiliriz.
yedekleme yaparken kullanılabilecek faydalı komutlar
by admin on Aug.06, 2009, under linux
Bulunduğu çalışma dizininden başlayarak, boş alt klasörleri bulup silmek için;
find . -type d -empty -exec rmdir {} \;
İçeriği değiştirilmiş dosyaları bulmak için ;
find / -mmin 30 -type f (Son 30 dakika içinde değişenler)
find / -mtime -1 -type f (Son 24 saat içinde değişenler)
Bütün MySQL veritabanlarını kendi adlarında yedeklemek için;
for I in `echo “show databases;” | mysql | grep -v Database`; do mysqldump $I > “$I.sql”; done
A klasöründe bulunan dosyaları B klasöründen silmek için (yanlışlıkla açılan arşiv dosyaları) ;
for dosya in /*; do rm /`basename $dosya`; done
Uzaktaki web sunucusundaki dosyanın bulunup bulunmadığını kontrol etmek için ;
wget –spider -v http://www.google.com/robots.txt
Hard Disk model ve seri numarası bilgisini almak için;
hdparm -i /dev/sda1
GB,MB,KB ve Byte olarak, ağaç yapısında klasörlerin listelenmesi için;
du -b –max-depth 1 | sort -nr | perl -pe ’s{([0-9]+)}{sprintf “%.1f%s”, $1>=2**30? ($1/2**30, “G”): $1>=2**20? ($1/2**20, “M”): $1>=2**10? ($1/2**10, “K”): ($1, “”)}e’
En fazla hafıza kullanan 10 işlemi ve detaylarını görmek için (top ve htop ile daha güzel sonuçlar alınabilir);
ps aux | sort -nk +4 | tail
[commandlinefu'ya teşekkürler]
servis durumunu kontrol eden betik
by admin on Jul.29, 2009, under linux
Örnek olarak proftpd nin çalışıp çalışmadığını kontrol eden, çalışmıyorsa mail atmasını sağlayan ve sonuçlarını log dosyasında tutan betik aşağıdaki gibi olabilir.
#!/bin/bash
#29.07.09 Cem DOGAN
#kontrol.shprogram=’proftpd’
date -d@1234567890 >> /var/log/kontrol.logif ps ax | grep -v grep | grep $program > /dev/null
then
echo “$program calisiyor” >> /var/log/kontrol.log
else
echo “$program calismiyor” >> /var/log/kontrol.log
mail -s “$program is down” user_name@email_address.com
fi
CCcam e Radegast,Newcamd ve Camd3 sunucularını eklemek
by admin on Jul.04, 2009, under dreambox
Eğer CCcam kullanıyorsanız Radegast,Newcamd ve Camd3 üzerinden ücretsiz eğitim/test amaçlı hizmet veren sunuculara da bağlantı sağlayabilirsiniz.
CCcam.cfg dosyanızı aşağıdaki şekilde düzenleyiniz.
Radegast Sunucular icin; Sifreleme Türü;
Seca için : 0100
Viaccess için : 0500
Irdeto için : 0604Şağlayıcı Kodu;
C+FR/TNT sat(19E) için : 32820R: IP_Adresi Port Sifreleme_Turu Saglayici_Kodu
Newcamd Sunucular icin; des şifresini aralarında boşluk bırakarak giriniz.
örnek : 01 02 03 04 05 06 07 08 09 10 11 12 13 14
N: IP_Adresi Port kullanici_adi sifresi des_sifresiCamd3 Sunucular icin; Sifreleme Türü;
Seca için : 0100
Viaccess için : 0500
Irdeto için : 0604Sağlayıcı Kodu;
C+FR/TNT sat(19E) için : 32820L: IP_Adresi Port kullanici_adi sifresi Sifreleme_Turu Saglayici_Kodu
CCcam sunucuları için; C: IP_Adresi Port kullanici_adi sifresi
Alt alta birkaç satır birden ekleyebilirsiniz. Gerekli düzenlemeyi yaptıktan sonra cihazınızı yada CCcam’i tekrar çalıştırmanız gerekmektedir.
Internet tarayıcınız üzerinden CCcam bilgilerinize erişmek için ; http://dreambox_IP_Adresi:16001/
Dreamstream yazılımıyla bilgisayarınız üzerinden dreambox a erişip TV izleyebilirsiniz.
ssh ile dosya kopyalama
by admin on Jun.18, 2009, under linux
dosya göndermek için ;
- ssh uzaktaki_makina cat <yerel_dosya – “>” uzak_dosya
- cat yerel_dosya | ssh uzaktaki_makina cat “>” uzak_dosya
dosya almak için ;
- ssh uzaktaki_makina “cat /home/dosya.tar.gz” > dosya.tar.gz
- ssh uzaktaki_makina cat “<” uzak_dosya >yerel_dosya
dosyaları karşılaştırmak için ;
# Uzaktaki makinanın işlemcisini kullanarak:
- ssh uzaktaki_makina cat uzak_dosya | diff – yerel_dosya
# Yerel makinanın işlemcisini kullanarak:
- ssh uzaktaki_makina cat <yerel_dosya “|” diff – uzak_dosya
ilerleme durumunu gösterebilen rcp nin geliştirilmiş hali scp komutuyla kopyalama işlemi;
# bulunduğun klasördeki sh dosyalarını uzaktaki makinadaki home klasörüne kopyalamak için:
- scp *.sh uzaktaki_makina:
# pdf dosyalarını uzaktaki makinada farklı bir klasöre kopyalamak için:
- scp *.pdf uzaktaki_makina:/home/cemd/altklasor
# uzaktaki makinadaki sh dosyalarını yerel makinaya almak için:
- scp uzaktaki_makina:*.sh .
# scp, sftp, ssh ve sshd aynı pakettedir. winscp de windows tabanlı makinelerde kullanılabilir.
[ Gürhan'a teşekkürler]
klasor boyutlari
by admin on Jun.13, 2009, under linux
Kullanıcıların posta kutusunun boyutunu listelemek için (Maildir) kullanılabilir;
du -h /home/kullanicilar | awk ‘$1 ~/M/ {sub(/M/, “Mb”); print $0}’ | awk ‘$2 ~/.Maildir$/{print $0}’|sort -n
20Mb den büyük dosyaları listelemek için
find / -type f -size +20000k -exec ls -lh {} \; | awk ‘{ print $9 “: ” $5 }’
Klasörde dosya isimlerindeki boşlukları ve büyük harfleri düzeltmek için;
#!/bin/bash
for f in *; do
file=$(echo $f | tr A-Z a-z | tr ‘ ‘ _)
[ ! -f $file ] && mv “$f” $file
done
LMS API
by admin on Jun.13, 2009, under java
IBM Learning Management Systems ve IBM Workplace Collaborative Learning uygulamalarında çok sayıda kullanıcıyı LMS API lerini kullanarak kaydetmek için aşağıdaki kod kullanılabilir.
Kaydedilecek kullanıcı adlarını ve kaydedilecek kursların kodlarını text dosyasından okuyup lms deki kurs atamasını hayata geçiren koddur.
Diğer LMS API lerini kullanmak için ibm in sitesinden apidoc incelenip geliştirilebilir.
import java.io.*;
import java.net.URL;
import java.util.ArrayList;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import org.apache.axis.client.*;
/**
* Kullanıcıyı bir kursa kaydeder…
* örneği : userid:00000000002f9200CTEN
* @author Cem DOGAN Aralik 2008
*
*/
public class Register_to_courseWCL {
public static String[] users;
public static int total=0;
public static void main(String[] args) {try {
File file = new File(“kullanicilar_kurslar.txt”);
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader buff = new BufferedReader(isr);
String inputLine = “”;ArrayList<String> list = new ArrayList();
while ((inputLine = buff.readLine()) != null) {
list.add(inputLine);
}
buff.close();users = new String[list.size()];
File roster_log=new File(“kursatama.log”);
FileOutputStream fos=new FileOutputStream(roster_log,true);
OutputStreamWriter out=new OutputStreamWriter(fos);
BufferedWriter buf=new BufferedWriter(out);
try{
for (int i = 0; i < list.size(); i++) {
users[i] = list.get(i);
String satir[] = users[i].split(“:”);kaydet(satir[0],satir[1]);
out.write(satir[0]+”:”+satir[1]+” tamam\r”);
}
}catch(Exception e){
e.printStackTrace();
}
buf.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}public static void kaydet(String kullaniciadi, String kurskodu) throws Exception{
URL url;
try {
url = new URL(“http://IBMLMSadresiniz/lms-lmm/services/LMSRosterAPI”);
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(url);
call.setUsername(“admin”);
call.setPassword(“sifresi”);
String NS_XSD = “http://www.w3.org/2001/XMLSchema”;
QName QNAME_TYPE_STRING = new QName(NS_XSD, “string”);
call.addParameter(“user_id”, QNAME_TYPE_STRING, ParameterMode.IN);
call.addParameter(“offering_id”, QNAME_TYPE_STRING,
ParameterMode.IN);
String[] params = { kullaniciadi, kurskodu };
call.setReturnType(QNAME_TYPE_STRING);
call.setOperationName(new QName(“LMSEnrollmentAPI”,
“enrollCourseForUser”));
call.invoke(params);} catch (Exception e) {
throw new Exception(“Bir hata oluştu”);
}
}
}
dreambox da unutulan root u değiştirmek
by admin on May.27, 2009, under dreambox
- Tuxbox Commander (TuxCom) eklentisini yükleyin.
- Kumandadaki sarı tuşu kullanarak TuxCom u çalıştırın.
- /var/etc/ klasörünün içindeki passwd dosyasını kumandadaki 4 tuşunu kullanarak düzenleyin.
- İçinde root geçen satırı root::0:0::/:/bin/sh
şeklinde düzenleyip kaydedin. - Cihazı kapatıp açtığınızda telnet ile root kullanıcısını şifre olmadan açabilirsiniz.
