Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2014-02-27 20:35:07

  sqrtek - Użytkownik

sqrtek
Użytkownik
Skąd: /bin/true
Zarejestrowany: 2012-06-14

Pobieranie nazw użytkowników z pliku txt i masowe tworzenie kont-PERL

Pisałem sobie taki prosty skrypcik, i czy ktoś mógłby powiedzieć czemu on nie działa?

Zbyt duża ilość zmiennych w miejscu gdzie ma zostać  użyta komenda do tworzenia użytkowników?

Kod:

#!/usr/bin/perl -w

 # pobiera dane z pliku .txt, i tworzy uzytkownikow na podstawie..
 # USER:GROUP:SHELL
   
  $rozmiar = 1;
  @tab_user = (0..$rozmiar);
  @tab_group = (0..$rozmiar);
  @tab_shell = (0..$rozmiar);
  
   $ref = \$rozmiar;
   $i = 0;
  
  
 open(PLIK_1, "<" , "dane.txt");
 
# wczytuje dane z pliku, i ROZDZIELA je do tablic.
 
  while ( <PLIK_1> ) {
 
         $zmienna = $_;
 
                 ($tab_user[$i],$tab_group[$i],$tab_shell[$i]) = split(/:/, $zmienna);
         $i++;
         $$ref++;  }
  
  
# WYPISUJE rozdzielone dane na ekranie, w celu weryfikacji poprawnosci kodu
  
  for($i=0; $i<$rozmiar-1; $i++ ) {
  
      print "user: $tab_user[$i] \t group: $tab_group[$i] \t shell: $tab_shell[$i]"; }


  
# TWORZY uzytkownikow na podstawie zebranych danych z tablic
  
  for($i=0; $i<$rozmiar-1; $i++) {
  
      system("useradd -g $tab_group[$i] -s $tab_shell[$i] $tab_user[$i] "); }
  
 
  
  close PLIK_1;

"Nie pozwól by zgiełk opinii innych ludzi, zagłuszył Twój wewnętrzny głos" ~ [i]Steve Jobs[/i]

Offline

 

#2  2014-02-27 22:00:29

  hello_world - Członek DUG

hello_world
Członek DUG
Skąd: Rymanów Zdrój
Zarejestrowany: 2010-06-03
Serwis

Re: Pobieranie nazw użytkowników z pliku txt i masowe tworzenie kont-PERL

Kod:

while ( <PLIK_1> ) {
         chomp;
         $zmienna = $_;

Żeby się nie rozjezdzało:

Kod:

for($i=0; $i<$rozmiar-1; $i++ ) {
  
      print "user: $tab_user[$i] \t group: $tab_group[$i] \t shell: $tab_shell[$i]\n"; }

Offline

 

#3  2014-02-27 22:41:44

  sqrtek - Użytkownik

sqrtek
Użytkownik
Skąd: /bin/true
Zarejestrowany: 2012-06-14

Re: Pobieranie nazw użytkowników z pliku txt i masowe tworzenie kont-PERL

Hmm faktycznie działa, ale jaką funkcję pełni to chomp gdy dodam do programu? Myślałem że chomp służy do wpisywania danych wprost z klawiatury, a tutaj jakie zastosowanie to ma? bo aż mnie zdziwiło to ? :o

No i dzięki za pomoc, w życiu bym nie wpadł na to, myslałem że coś perl nie ogarnia komendy systemowej lub po prostu nie mogę dodać tylu zmiennych do niej.


"Nie pozwól by zgiełk opinii innych ludzi, zagłuszył Twój wewnętrzny głos" ~ [i]Steve Jobs[/i]

Offline

 

#4  2014-02-27 22:58:29

  hello_world - Członek DUG

hello_world
Członek DUG
Skąd: Rymanów Zdrój
Zarejestrowany: 2010-06-03
Serwis

Re: Pobieranie nazw użytkowników z pliku txt i masowe tworzenie kont-PERL

chomp usuwa ci znak końca lini przez to dostajesz czyste dane niczym nie zaśmiecone

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)

[ Generated in 0.013 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00014 SET CHARSET latin2
0.00007 SET NAMES latin2
0.00155 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.188.18.90' WHERE u.id=1
0.00171 UPDATE punbb_online SET logged=1715944166 WHERE ident='18.188.18.90'
0.00071 SELECT * FROM punbb_online WHERE logged<1715943866
0.00101 SELECT topic_id FROM punbb_posts WHERE id=258670
0.00169 SELECT id FROM punbb_posts WHERE topic_id=25351 ORDER BY posted
0.00097 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=25351 AND t.moved_to IS NULL
0.00008 SELECT search_for, replace_with FROM punbb_censoring
0.00129 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=25351 ORDER BY p.id LIMIT 0,25
0.00127 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=25351
Total query time: 0.01049 s