LINUX.ORG.RU

Сообщения SWAROVSKI

 

Удалить все текстовые файлы без find

Здравствуйте.

Студент. Сдаю лабу по UNIX.

Задание:

Удалить все текстовые файлы из заданного каталога

Я не долго думая, сую ему этот код:

find /DIR -name "*.txt" | xargs rm

А он говорит, что не нужен мне find, делай мол циклы. Хотя про это в задании не сказано.

Я вот набросал:

if test "$1" 
	then
        
        cd "$1";

        ТУТ ЦИКЛ, в котором мы идем по всем файлам

            if  имя файла == *.txt
        	rm его (удаляем его)
            fi

        КОНЕЦ ЦИКЛА
        
    else
  		echo Usage: noparam
fi

Можете русский язык перевсти на BASH, пожалуйста.

Перемещено beastie из general

 

SWAROVSKI
()

Не работает велосипед pwd на сях

Ребят, помогите, пожалуйста, написать велосипед pwd на сях.

Вот, что набросал, получаю «ошибку сегментации (сделан дамп памяти)».

Уверен, что тут что с выделенмем памяти под эти указателями...

Указатели никогда не трогал почти, под unux пишу впервые.

Выручите, посмотрите, пожалуйста:

#include <iostream>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <dirent.h>

using namespace std;

int main()
{
    DIR* dir;
    struct  dirent* entry;
    struct stat st;
    char *cur_ent;
    char find_elem[100][20];
    char *last;
    char *end;


    strcpy(end,"home");
    strcpy(last, "OS3cpp"); // OS3cpp - название проги

    while(last!=end) {
        strcat(cur_ent,"//");
        printf("%s", last);
        strcat(cur_ent, last);
        chdir("..");
        dir = opendir(".");
        int i = 0;
        while ((entry = readdir(dir))!=NULL) {
            if(strcmp(entry->d_name, ".") == 0 && strcmp(entry->d_name, "..") == 0){
                stat(entry->d_name,&st);
                    if(S_ISDIR(st.st_mode)) {
                        strcpy(find_elem[i++], entry->d_name);
                    }
            }
        }

        int t = 0;
        while(t == 0) {
            i++;
            chdir(find_elem[i]);
            dir = opendir(".");
            while((entry = readdir(dir))!=NULL) {
                if(entry->d_name == last) {
                    chdir("..");
                    strcat(last,find_elem[i]);
                    t=1;
                } else chdir("..");
                t=1;
            }
        }
    }
    return 0;
}

Перемещено leave из general

 

SWAROVSKI
()

Shell - сравнить два каталога на повторяющиеся файлы.

Вывести на экран имена файлов из одного каталога, отсутствующих в другом каталоге. Имена каталогов задаются в виде агрументов.

Вначале можно подсчитать количество файлов:

num1=`cd $1 && find * -maxdepth 0 -type f | wc -w`
Затем удобно было бы загнать листинг файлов из обоих каталогов в массивы (как?) Ну а дальше - в циклах сравнить названия и вывести те, которые не повторяются:
 flg=0
 for ((i=1; i<$num1; i++)) do
    flg=0
    for ((j=1; j<$num2; j++)) do
      if [ "$i" -ne "$j" ]
        then if [ "$массив1[$i]" = "$массив2[$j]" ] then flg = 1 fi
      fi
    done
    if [ $flg != "1" ] then echo $массив1[$i] fi
 done
Что можете предложить / чяднт? Согласен, после C++ на shell перейти не очень просто...

 

SWAROVSKI
()

Bash - Резервное копирование файлов, заданных аргументами

Имеется такое задание:

Написать командную процедуру, которая создает каталог для резервного копирования файлов.
Имена каталога и файлов указываются в виде аргументов.

Я третий день изучаю bash и набросал очень примитивный код:


#!/bin/bash
mkdir $1 && 
cd $1 && 
tar -czf $1-`date +%F--%H-%M`.tar.gz $2

Далее я его отладил, все работает, но потом подумал, что если задать несколько файлов подряд, то заархивируется только 1.

Сейчас держу в уме такой алгоритм: принимать три и более аргументов, где первый аргумент — каталог, куда архивируем, второй аргумент — сколько файлов архивируем, третий и последующие аргументы — файлы, которые архивируем. Далее цикл от 1 до $2 , где в теле архивируются все файлы, заданные аргументами $3 и далее.

Но мне кажется, что этот способ не рационален...

Может, можно как-то проще это реализовать?

Что-нибудь посоветуете

 

SWAROVSKI
()

Проблемы с запуском сервера minecraft через sudo -u

Здравствуйте.

У меня есть небольшой проект на php, в котором я сначала получаю:

$id = $row['id'];

Потом я выполняю такую команду (собственно, запускаю майнкрафт сервер):

'screen -dmS server_'.$id.' sudo -u s'.$id.' java -Xincgc -Xmx1000m -Xms100m -jar craftbukkit.jar nogui;';

И получаю такую ошибку:

Error: Could not find or load main class org.bukkit.craftbukkit.Main

Я пробовал максимально упрощать скрипт запуска и понял, что ошибка возникает из-за того, что я пытаюсь запустить сервер не из-под рута. Из под рута всё отлично.

P.S. Java устанавливал от root'а. Юзеры, как вы поняли, всё время разные. Быть может проблема в том, что что-либо запустить джавой можно только от рута, и это нужно где-то поменять?

P.P.S. sudo -u s'.$id.' --- буква s Нелишняя.

Debian 6

 

SWAROVSKI
()

OPENVPN проблемы

Здравствуйте. Мой интернет-провайдер блокирует почти все порты, что даже wmk запустить нельзя. Я попробовал решить эту проблему, подняв VPN сервер на облаке от селектела в Питере. Всё прошло успешно, но со временем меня перестал устраивать пинг (начал играть в онлайн-игрушки). Т.к. сам я с Подмосковья, то решил взять VDS к себе поближе у FirstdVDS, но вот VPN там почему-то подниматься совсем не хочет...

Всё, как и с селектелом, делаю по этому ману - http://howitmake.ru/blog/ubuntu/110.html

Но получаю ошибку при коннекте:

Sat Jun 14 21:48:10 2014 OpenVPN 2.3.4 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [PKCS11] [IPv6] built on Jun  5 2014
Sat Jun 14 21:48:10 2014 library versions: OpenSSL 1.0.1h 5 Jun 2014, LZO 2.05
Sat Jun 14 21:48:10 2014 MANAGEMENT: TCP Socket listening on [AF_INET]127.0.0.1:25340
Sat Jun 14 21:48:10 2014 Need hold release from management interface, waiting...
Sat Jun 14 21:48:11 2014 MANAGEMENT: Client connected from [AF_INET]127.0.0.1:25340
Sat Jun 14 21:48:11 2014 MANAGEMENT: CMD 'state on'
Sat Jun 14 21:48:11 2014 MANAGEMENT: CMD 'log all on'
Sat Jun 14 21:48:11 2014 MANAGEMENT: CMD 'hold off'
Sat Jun 14 21:48:11 2014 MANAGEMENT: CMD 'hold release'
Sat Jun 14 21:48:11 2014 Socket Buffers: R=[8192->8192] S=[8192->8192]
Sat Jun 14 21:48:11 2014 Attempting to establish TCP connection with [AF_INET]180.120.253.239:1194
Sat Jun 14 21:48:11 2014 MANAGEMENT: >STATE:1402768091,TCP_CONNECT,,,
Sat Jun 14 21:48:32 2014 TCP: connect to [AF_INET]180.120.253.239:1194 failed, will try again in 5 seconds: Connection timed out (WSAETIMEDOUT)
Sat Jun 14 21:48:37 2014 MANAGEMENT: >STATE:1402768117,TCP_CONNECT,,,

Никакого понятия не имею, что не так... Просто не коннектит и всё! Конфиг сервера:

#Порт для подключения, стандартный 1194, но вы можете выбрать тот который больше нравится
port 1194
#Тип соединения TCP или UDP
proto tcp
#Тин тоннеля
dev tun 
#Список сертификатов
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
# При подключении мы будем попадать в эту сеть
server 192.168.100.0 255.255.255.0
#Сохраняем выдаенные адреса клиентов в файл
ifconfig-pool-persist ipp.txt
#Проверяем состояние канала
keepalive 20 120 
#использовать сжатие
comp-lzo 
persist-key
persist-tun
#включаем логирование 
status openvpn-status.log 
#уровень логирования 
verb 3
#Определяем наш OpenVPN сервер в качестве шлюза по умолчанию
push "redirect-gateway" 
#Разрешаем соединения между клиентами
client-to-client
#добавляем маршруты
route 192.168.100.0 255.255.255.0
#Указываем DNS сервер
push "dhcp-option 8.8.8.8"

Конфиг клиента:

##############################################
# Sample client-side OpenVPN 2.0 config file #
# for connecting to multi-client server.     #
#                                            #
# This configuration can be used by multiple #
# clients, however each client should have   #
# its own cert and key files.                #
#                                            #
# On Windows, you might want to rename this  #
# file so it has a .ovpn extension           #
##############################################

# Specify that we are a client and that we
# will be pulling certain config file directives
# from the server.
client

# Use the same setting as you are using on
# the server.
# On most systems, the VPN will not function
# unless you partially or fully disable
# the firewall for the TUN/TAP interface.
;dev tap
dev tun

# Windows needs the TAP-Win32 adapter name
# from the Network Connections panel
# if you have more than one.  On XP SP2,
# you may need to disable the firewall
# for the TAP adapter.
;dev-node MyTap

# Are we connecting to a TCP or
# UDP server?  Use the same setting as
# on the server.
proto tcp
;proto udp

# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote 180.120.253.239 1194
;remote my-server-2 1194

# Choose a random host from the remote
# list for load-balancing.  Otherwise
# try hosts in the order specified.
;remote-random

# Keep trying indefinitely to resolve the
# host name of the OpenVPN server.  Very useful
# on machines which are not permanently connected
# to the internet such as laptops.
resolv-retry infinite

# Most clients don't need to bind to
# a specific local port number.
nobind

# Downgrade privileges after initialization (non-Windows only)
;user nobody
;group nobody

# Try to preserve some state across restarts.
persist-key
persist-tun

# If you are connecting through an
# HTTP proxy to reach the actual OpenVPN
# server, put the proxy server/IP and
# port number here.  See the man page
# if your proxy server requires
# authentication.
;http-proxy-retry # retry on connection failures
;http-proxy [proxy server] [proxy port #]

# Wireless networks often produce a lot
# of duplicate packets.  Set this flag
# to silence duplicate packet warnings.
;mute-replay-warnings

# SSL/TLS parms.
# See the server config file for more
# description.  It's best to use
# a separate .crt/.key file pair
# for each client.  A single ca
# file can be used for all clients.
ca ca.crt
cert ice.crt
key ice.key

# Verify server certificate by checking
# that the certicate has the nsCertType
# field set to "server".  This is an
# important precaution to protect against
# a potential attack discussed here:
#  http://openvpn.net/howto.html#mitm
#
# To use this feature, you will need to generate
# your server certificates with the nsCertType
# field set to "server".  The build-key-server
# script in the easy-rsa folder will do this.
ns-cert-type server

# If a tls-auth key is used on the server
# then every client must also have the key.
;tls-auth ta.key 1

# Select a cryptographic cipher.
# If the cipher option is used on the server
# then you must also specify it here.
;cipher x

# Enable compression on the VPN link.
# Don't enable this unless it is also
# enabled in the server config file.
comp-lzo

# Set log file verbosity.
verb 3

# Silence repeating messages
;mute 20

 

SWAROVSKI
()

RSS подписка на новые темы