Archive | Aralık, 2017

SparkyLinux 4.7 armhf duyuruldu

“Tyche” kod adlı 4.7 kararlı sürümü 19 Kasım 2017‘de duyurulan SparkyLinux’un Debian 9 “Stretch”e dayalı olarak gelen 4.7 armhf sürümü duyuruldu. Küçük bir uygulama setiyle Openbox ile ya da CLI (metin tabanlı) olarak kullanıma sunulan sürümde, bilinen tüm sorunların düzeltildiği söyleniyor. “pcmanfm” dosya yöneticisinin “thunar” ile değiştirildiği belirtilirken, “uget” indirme yöneticisinin de metin tabanlı “aria2” ile değiştirildiği ifade ediliyor. “netsurf” web tarayıcısının tercih edildiği sistemde, paket yöneticisi aracılığıyla favori web tarayıcılarının yüklenebileceği belirtiliyor. SparkyLinux 4.7 armhf hakkında ayrıntılı bilgi edinmek için sürüm duyurusunu inceleyebilirsiniz.

Continue Reading →

SparkyLinux 4.7 armhf edinmek için aşağıdaki linklerden yararlanabilirsiniz.

0

GNU GLOBAL 6.6 duyuruldu

Emacs ve Vi editörü, Bash kabuğu, çeşitli web tarayıcılar gibi değişik ortamlarda aynı şekilde çalışma becerisine sahip bir kaynak kod etiketleme sistemi olan GNU GLOBAL‘in 6.6 sürümü, Shigio YAMAGUCHI tarafından duyuruldu. GNU GLOBAL 6.6’yı duyurmaktan büyük mutluluk duyduğunu söyleyen YAMAGUCHI; işlevler, makrolar, yapılar, sınıflar gibi çeşitli nesnelerin kaynak dosyalarına kolaylıkla yerleştirilebileceğini ve taşınabileceğini belirtti. GNU ve BSD gibi UNIX (POSIX) uyumlu işletim sistemlerinde uyumlu biçimde çalışan yazılım, GNU Özgür Belgeleme Lisansı ile kullanıma sunuluyor. C, C++, Yacc, Java, PHP4 ve assembly olmak üzere 6 dili destekleyen yazılım; makine mimarisinden bağımsız olan etiket dosyalarının artımlı güncellenmesini destekliyor. GNU GLOBAL 6.6 hakkında ayrıntılı bilgi edinmek için projenin sürüm duyurusunu inceleyebilirsiniz.

Continue Reading →

GNU GLOBAL 6.6 edinmek için aşağıdaki linklerden yararlanabilirsiniz.

0

BlackArch Linux 2017.12.11 duyuruldu

Penetrasyon testleri ve güvenlik araştırmacıları için tasarlanmış Arch Linux tabanlı bir dağıtım olan BlackArch Linux’un 2017.12.11 sürümü duyuruldu. Çeşitli yeni araçların eklendiği sistemde, tüm sistem paketleri ve tüm pencere yöneticisi (awesome, fluxbox, openbox) menüleri güncellenmiş bulunuyor. 4.14.4 Linux çekirdeği üzerine yapılandırılan sistemde, BlackArch yükleyicisi 0.6.2 sürümüne güncellendi. BlackArch araç ve paketleri de güncellenen sistemde, tüm pencere yöneticisi menülerinin güncellenmesi öneriliyor. Tüm BlackArch kullanıcılarına ve destekçilerine teşekkür edildiği ifade ediliyor. BlackArch Linux 2017.12.11 hakkında ayrıntılı bilgi edinmek için projenin sürüm duyurusunu inceleyebilirsiniz.

Continue Reading →

BlackArch Linux 2017.12.11 edinmek için aşağıdaki linklerden yararlanabilirsiniz.

0

LinHES 8.5.1 çıktı

MythTV ile yapılandırılan ve basit bir ev sineması PC’si oluşturmayı amaç edinen Arch Linux tabanlı dağıtım LinHES‘in (Linux Home Entertainment System) 8.5.1 sürümü çıktı. Henüz resmi duyurusu yapılmamış olan sürüm, indirilmek üzere yansılarda yerini aldı. LinHES geliştirme ekibininyeni sürümü kullanıma sunmaktan memnun olduğu belirtilirken, OpenPHT özellikleri içeren sistemde; sistem kütüphanelerinin, NVIDIA sürücülerinin ve diğer birçok parçanın da güncellenmiş olduğu ifade ediliyor. Sistemin OpenPHT’ye taşındığı hatırlatılıyor.

Continue Reading →

LinHES 8.5.1 edinmek için aşağıdaki linkten yararlanabilirsiniz.

0

NetworkManager 1.10.2 duyuruldu

GNU/Linux tabanlı ve diğer Unix benzeri işletim sistemlerinde bilgisayar ağlarının kullanımını basitleştirmeyi amaçlayan bir yardımcı program olan NetworkManager’in 1.10.2 sürümü duyuruldu. Bunun önemli değişiklikler içeren yeni bir kararlı sürüm olduğu belirtilirken, sürümün pek çok hata düzeltmesi ve iyileştirme ile geldiği ifade edildi. 2004’te GNU/Linux kullanıcılarının modern ağ ihtiyaçları, özellikle kablosuz ağlarla daha kolay başa çıkabilmelerini sağlamak amacıyla Red Hat tarafından başlatılan bir proje olan NetworkManager; mevcut bağlantıyı kullanmaya çalışırken ya da kullanıcı kablosuz ağlar arasında dolaşırken fırsatçı bir yaklaşım benimser. D-Bus ve HAL’i kapsamlı bir şekilde kullanan ilk büyük GNU/Linux masaüstü bileşenlerinden biri olan NetworkManager; Haziran 2009’dan bu yana HAL’e bağımlı değildir ve 0.9.10 sürümünden bu yana (hemen hemen 2014’ten beri) kök işlem için D-Bus daemonunun çalışmasını gerektirmez. NetworkManager 1.10.2 hakkında daha ayrıntılı bilgi edinmek için sürüm duyurusunu inceleyebilirsiniz.

Continue Reading →

NetworkManager 1.10.2 edinmek için aşağıdaki linklerden yararlanabilirsiniz.

0

How to write practical shell scripts

In the last post, we talked about regular expressions and we saw how to use them in sed and awk for text processing, and we discussed before Linux sed command and awk command. During the series, we wrote small shell scripts, but we didn’t mix things up, I think we should take a small step further and write a useful shell script. However, the scripts in this post will help you to empower your script writing skills. You can send messages to someone by phone or email, but one method, not commonly used anymore, is sending a message directly to the user’s terminal. We are going to build a bash script that will send a message to a user who is logged into the Linux system. For this simple shell script, only a few functions are required. Most of the required commands are common and have been covered in our series of shell scripting; you can review the previous posts.

Continue Reading →

First, we need to know who is logged in. This can be done using the who command which retrieves all logged in users.

$ who

shell scripts who command

To send a message you need the username and his current terminal.

You need to know if messages are allowed or not for that user using the mesg command.

$ mesg

shell scripts mesg command

If the result shows “is y” that means messaging is permitted. If the result shows “is n”, that means messaging is not permitted.

To check any logged user message status, use the who command with -T option.

$ who T

If you see a dash (-) that means messages are turned off and if you see plus sign (+) that means messages are enabled.

To allow messages, type mesg command with the “y” option like this:

$ mesg y

shell scripts allow messages

Sure enough, it shows “is y” which means messages are permitted for this user.

Of course, we need another user to be able to communicate with him so in my case I’m going to connect to my PC using SSH and I’m already logged in with my user, so we have two users logged onto the system.

Let’s see how to send a message.

Write Command

The write command is used to send messages between users using the username and current terminal.

For those users who logged into the graphical environment (KDE, Gnome, Cinnamon or any), they can’t receive messages. The user must be logged onto the terminal

We will send a message to testuser user from my user likegeeks like this:

$ write testuser pts/1

shell scripts write command

Type the write command followed by the user and the terminal and hit Enter.

When you hit Enter, you can start typing your message. After finishing the message, you can send the message by pressing the Ctrl+D key combination which is the end of file signal. I recommend you to review the post about signals and jobs.

shell scripts receive message

The receiver can recognize which user on which terminal sends the message. EOF means that the message is finished.

I think now we have all the parts to build our shell script.

Creating The Send Script

Before we create our shell script, we need to determine whether the user we want to send a message to him is currently logged on the system, this can be done using who command to determine that.

logged=$(who | grep -i -m 1 $1 | awk '{print $1}')

We get the logged user using the grep command. The -m 1 option is used in case there are multiple sessions opened for the same user.

If the user is not online, the grep command returns either nothing.

This output is piped to the awk command. The awk command returns only the first item. The final output from the awk command is stored in the variable logged_on.

Then we need to check the variable if it contains something or not:

if [ -z $logged ]

then

echo "$1 is not logged on."

echo "Exit"

exit

fi

I recommend you to read the post about the if statement and how to use it Bash Script.

shell scripts check logged user

The logged variable is tested to check if it is a zero or not.

If it is zero, the script prints the message, and the script is terminated.

If the user is logged, the logged_on variable contains the username.

Checking If The User Accepts Messages

To check if messages are allowed or not, use the who command with -T option.

check=$(who -T | grep -i -m 1 $1 | awk '{print $2}')

if [ "$check" != "+" ]

then

echo "$1 disable messaging."

echo "Exit"

exit

fi

shell script check message allowed

Notice that we use the who command with -T. This shows a (+) beside the username if messaging is permitted. Otherwise, it shows a (-) beside the username, if messaging is not permitted.

Finally, we check for a messaging indicator if the indicator is not set to plus sign (+).

Checking If Message Was Included

You can check if the message was included or not like this:

if [ -z $2 ]

then

echo "Message not found"

echo "Exit"

exit

fi

Getting the Current Terminal

Before we send a message, we need to get the user current terminal and store it in a variable.

terminal=$(who | grep -i -m 1 $1 | awk '{print $2}')

Then we can send the message:

echo $2 | write $logged $terminal

Now we can test the whole shell script to see how it goes:

$ ./senderscript likegeeks welcome

Let’s see the other shell window:

shell script send message

Good!  You can now send a simple one-word messages.

Sending a Long Message

If you try to send more than one word:

$ ./senderscript likegeeks welcome to shell scripting

shell script oneword message

It didn’t work. Only the first word of the message is sent.

To fix this problem, we will use the shift command with the while loop.

shift

while [ -n "$1" ]

do

message=$message' '$1

shift

done

And now one thing needs to be fixed, which is the message parameter.

echo $whole_message | write $logged $terminal

So now the whole script should be like this:

#!/bin/bash

logged=$(who | grep -i -m 1 $1 | awk '{print $1}')

if [ -z $logged ]

then

echo "$1 is not logged on."

echo "Exit"

exit

fi

check=$(who -T | grep -i -m 1 $1 | awk '{print $2}')

if [ "$check" != "+" ]

then

echo "$1 disable messaging."

echo "Exit"

exit

fi

if [ -z $2 ]

then

echo "Message not found"

echo "Exit"

exit

fi

terminal=$(who | grep -i -m 1 $1 | awk '{print $2}')

shift

while [ -n "$1" ]

do

message=$message' '$1

shift

done

echo $message | write $logged $terminal

If you try now:

$ ./senderscript likegeeks welcome to shell scripting

shell script complete message

Awesome!! It worked. Again, I’m not here to make a script to send the message to the user, but the main goal is to review our shell scripting knowledge and use all the parts we’ve learned together and see how things work together.

Monitoring Disk Space

Let’s build a script that monitors the biggest top ten directories.

If you add -s option to the du command, it will show summarized totals.

$ du -s /var/log/

The -S option is used to show the subdirectories totals.

$ du -S /var/log/

shell script du command

You should use the sort command to sort the results generated by the du command to get the largest directories like this:

$ du -S /var/log/ | sort -rn

shell script sort command

The -n to sort numerically and the -r option to reverse the order so it shows the bigger first.

The N command is used to label each line with a number:

sed '{11,$D; =}' |

sed 'N; s/\n/ /' |

Then we can clean the output using the awk command:

awk '{printf $1 ":" "\t" $2 "\t" $3 "\n"}'

Then we add a colon and a tab so it appears much better.

$ du -S /var/log/ |

sort -rn |

sed '{11,$D; =}' |

# pipe the first result for another one to clean it

sed 'N; s/\n/ /' |

# formated printing using printf

awk '{printf $1 ":" "\t" $2 "\t" $3 "\n"}'

shell script format output with sed and awk

Suppose we have a variable called  MY_DIRECTORIES that holds 2 folders.

MY_DIRECTORIES=”/home /var/log”

We will iterate over each directory from MY_DIRECTORIES variable and get the disk usage using du command.

So the shell script will look like this:

#!/bin/bash

MY_DIRECTORIES="/home /var/log"

echo "Top Ten Directories"

for DIR in $MY_DIRECTORIES

do

echo "The $DIR Directory:"

du -S $DIR 2>/dev/empty |

sort -rn |

sed '{11,$D; =}' |

# pipe the first result for another one to clean it

sed 'N; s/\n/ /' |

# formated printing using printf

awk '{printf $1 "\t" "\t" $2 "\t" $3 "\r\n"}'

done

exit

shell script monitor disk usage

Good!! Both directories /home and /var/log are shown on the same report.

You can filter files, so instead of calculating the consumption of all files, you can calculate the consumption for a specific extension like *.log or whatever.

One thing I have to mention here, in production systems, you can’t rely on disk space report instead, you should use disk quotas.

Quota package is specialized for that, but here we are learning how bash scripts work.

Again the shell scripts we’ve introduced here is for showing you how shell scripting work, there are a ton of ways to implement any task in Linux.

My post is finished for now. I tried to reduce the post length and make everything simple as possible, hope you like it.

Keep coming back. Thank you.

likegeeks.com

0

Darktable 2.4.0 RC1 duyuruldu

Açık kaynak kodlu bir fotoğraf uygulaması ve RAW geliştiricisi olan Darktable‘ın 2.4.0 sürümünün ilk sürüm adayı duyuruldu. Darktable 2.4.0 RC1’i duyurmaktan gurur duyduğunu belirten geliştirici ekip; github sürümüne buradan erişilebileceğini belirtti. GNU Genel Kamu Lisansı 3 altında kullanıma sunulan ve GNU/Linux, OS X ve Solaris altında çalışan yazılım, fotoğrafçılar için sanal bir karanlık oda sağlıyor. Bu, bir veritabanında dijital negatifler yönetme ve yakınlaştırılabilenleri görüntüleme olanağı sağlıyor, ham görüntüleri geliştirmeye ve onları geliştirmeye imkan veriyor. Pek çok hata düzeltmesiyle gelen sürümde, Jpeg formatlı yazıcı için de diğer formatlarda olduğu gibi meta yazmak için libexiv2 kullanılması gerektiği hatırlatılıyor.  Darktable 2.4.0 RC1 hakkında ayrıntılı bilgi edinmek için GitHub sayfasını inceleyebilirsiniz.

Continue Reading →

Darktable 2.4.0 RC1 edinmek için aşağıdaki linkten yararlanabilirsiniz.

0