Users create script from CSV file

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP








up vote
3
down vote

favorite












Im trying to get this script working but what I get is:




14: Syntax error: "(" unexpected (expecting "fi").




Hope you guys can solve my problem because it's been a while Im looking into the error...
If you need the .csv file let me know.



Here is the script:



#!/bin/bash
filein="proyecto3.csv"
IFS=$'n'
if [ ! -f "$filein" ]
then
echo "Cannot find file $filein"
else
groups=(`cut -d: -f 6 "$filein" | sed 's/ //'`)
fullnames=(`cut -d: -f 1 "$filein"`)
userid=(`cut -d: -f 2 "$filein"`)
usernames=(`cut -d: -f 1 "$filein" | tr [A-Z] [a-z] | awk 'print substr($1,1,1) $2'`)
fi
for group in $groups[*]
do
grep -q "^$group" /etc/group ; let x=$?
if [ $x -eq 1 ]
then
groupadd "$group"
fi
done
x=0
created=0
for user in $usernames[*]
do
useradd -n -c $fullnames[$x] -g "$groups[$x]" $user 2> /dev/null
if [ $? -eq 0 ]
then
let created=$created+1
fi
echo "$usernames[$x]" | passwd --stdin "$user" > /dev/null
echo "Complete. $created accounts have been created."
fi






share|improve this question


















  • 1




    the last fi in last line is extar I think
    – Î±Ò“sнιη
    May 24 at 6:28















up vote
3
down vote

favorite












Im trying to get this script working but what I get is:




14: Syntax error: "(" unexpected (expecting "fi").




Hope you guys can solve my problem because it's been a while Im looking into the error...
If you need the .csv file let me know.



Here is the script:



#!/bin/bash
filein="proyecto3.csv"
IFS=$'n'
if [ ! -f "$filein" ]
then
echo "Cannot find file $filein"
else
groups=(`cut -d: -f 6 "$filein" | sed 's/ //'`)
fullnames=(`cut -d: -f 1 "$filein"`)
userid=(`cut -d: -f 2 "$filein"`)
usernames=(`cut -d: -f 1 "$filein" | tr [A-Z] [a-z] | awk 'print substr($1,1,1) $2'`)
fi
for group in $groups[*]
do
grep -q "^$group" /etc/group ; let x=$?
if [ $x -eq 1 ]
then
groupadd "$group"
fi
done
x=0
created=0
for user in $usernames[*]
do
useradd -n -c $fullnames[$x] -g "$groups[$x]" $user 2> /dev/null
if [ $? -eq 0 ]
then
let created=$created+1
fi
echo "$usernames[$x]" | passwd --stdin "$user" > /dev/null
echo "Complete. $created accounts have been created."
fi






share|improve this question


















  • 1




    the last fi in last line is extar I think
    – Î±Ò“sнιη
    May 24 at 6:28













up vote
3
down vote

favorite









up vote
3
down vote

favorite











Im trying to get this script working but what I get is:




14: Syntax error: "(" unexpected (expecting "fi").




Hope you guys can solve my problem because it's been a while Im looking into the error...
If you need the .csv file let me know.



Here is the script:



#!/bin/bash
filein="proyecto3.csv"
IFS=$'n'
if [ ! -f "$filein" ]
then
echo "Cannot find file $filein"
else
groups=(`cut -d: -f 6 "$filein" | sed 's/ //'`)
fullnames=(`cut -d: -f 1 "$filein"`)
userid=(`cut -d: -f 2 "$filein"`)
usernames=(`cut -d: -f 1 "$filein" | tr [A-Z] [a-z] | awk 'print substr($1,1,1) $2'`)
fi
for group in $groups[*]
do
grep -q "^$group" /etc/group ; let x=$?
if [ $x -eq 1 ]
then
groupadd "$group"
fi
done
x=0
created=0
for user in $usernames[*]
do
useradd -n -c $fullnames[$x] -g "$groups[$x]" $user 2> /dev/null
if [ $? -eq 0 ]
then
let created=$created+1
fi
echo "$usernames[$x]" | passwd --stdin "$user" > /dev/null
echo "Complete. $created accounts have been created."
fi






share|improve this question














Im trying to get this script working but what I get is:




14: Syntax error: "(" unexpected (expecting "fi").




Hope you guys can solve my problem because it's been a while Im looking into the error...
If you need the .csv file let me know.



Here is the script:



#!/bin/bash
filein="proyecto3.csv"
IFS=$'n'
if [ ! -f "$filein" ]
then
echo "Cannot find file $filein"
else
groups=(`cut -d: -f 6 "$filein" | sed 's/ //'`)
fullnames=(`cut -d: -f 1 "$filein"`)
userid=(`cut -d: -f 2 "$filein"`)
usernames=(`cut -d: -f 1 "$filein" | tr [A-Z] [a-z] | awk 'print substr($1,1,1) $2'`)
fi
for group in $groups[*]
do
grep -q "^$group" /etc/group ; let x=$?
if [ $x -eq 1 ]
then
groupadd "$group"
fi
done
x=0
created=0
for user in $usernames[*]
do
useradd -n -c $fullnames[$x] -g "$groups[$x]" $user 2> /dev/null
if [ $? -eq 0 ]
then
let created=$created+1
fi
echo "$usernames[$x]" | passwd --stdin "$user" > /dev/null
echo "Complete. $created accounts have been created."
fi








share|improve this question













share|improve this question




share|improve this question








edited May 24 at 6:24









Vlad Spirin

3203417




3203417










asked May 24 at 3:13









Elio Basciani

183




183







  • 1




    the last fi in last line is extar I think
    – Î±Ò“sнιη
    May 24 at 6:28













  • 1




    the last fi in last line is extar I think
    – Î±Ò“sнιη
    May 24 at 6:28








1




1




the last fi in last line is extar I think
– Î±Ò“sнιη
May 24 at 6:28





the last fi in last line is extar I think
– Î±Ò“sнιη
May 24 at 6:28











1 Answer
1






active

oldest

votes

















up vote
5
down vote



accepted










Simply remove the very last line in your script (also it helps to do a proper indentation to see your errors). Also you forgot to end your last for loop with a done:



#!/bin/bash
filein="proyecto3.csv"
IFS=$'n'

if [ ! -f "$filein" ]
then
echo "Cannot find file $filein"
else
groups=(`cut -d: -f 6 "$filein" | sed 's/ //'`)
fullnames=(`cut -d: -f 1 "$filein"`)
userid=(`cut -d: -f 2 "$filein"`)
usernames=(`cut -d: -f 1 "$filein" | tr [A-Z] [a-z] | awk 'print substr($1,1,1) $2'`)
fi

for group in $groups[*]
do
grep -q "^$group" /etc/group ; let x=$?
if [ $x -eq 1 ]
then
groupadd "$group"
fi
done

x=0 #not sure why you reset x here to zero !?
created=0

for user in $usernames[*]
do
useradd -n -c $fullnames[$x] -g "$groups[$x]" $user 2> /dev/null
if [ $? -eq 0 ]
then
let created=$created+1
fi
done

echo "$usernames[$x]" | passwd --stdin "$user" > /dev/null
echo "Complete. $created accounts have been created."


Up to that I can really advise you to use something like shellcheck on your script ( you can get it from the normal Ubuntu universe repositories).



sudo apt update
sudo apt install shellcheck


It outputs a lot more you can do better on your script:



$ shellcheck test.sh

In test.sh line 9:
groups=(`cut -d: -f 6 "$filein" | sed 's/ //'`)
^-- SC2006: Use $(..) instead of legacy `..`.


In test.sh line 10:
fullnames=(`cut -d: -f 1 "$filein"`)
^-- SC2006: Use $(..) instead of legacy `..`.


In test.sh line 11:
userid=(`cut -d: -f 2 "$filein"`)
^-- SC2034: userid appears unused. Verify it or export it.
^-- SC2006: Use $(..) instead of legacy `..`.


In test.sh line 12:
usernames=(`cut -d: -f 1 "$filein" | tr [A-Z] [a-z] | awk 'print substr($1,1,1) $2'`)
^-- SC2006: Use $(..) instead of legacy `..`.
^-- SC2060: Quote parameters to tr to prevent glob expansion.
^-- SC2060: Quote parameters to tr to prevent glob expansion.


In test.sh line 29:
useradd -n -c $fullnames[$x] -g "$groups[$x]" $user 2> /dev/null
^-- SC2086: Double quote to prevent globbing and word splitting.
^-- SC2086: Double quote to prevent globbing and word splitting.


In test.sh line 30:
if [ $? -eq 0 ]
^-- SC2181: Check exit code directly with e.g. 'if mycmd;', not indirectly with $?.


Alternatively, use the online shellcheck tool...






share|improve this answer






















  • upvoted for the recommendation of shellcheck. Nice tool!
    – muclux
    May 24 at 7:54











  • @muclux You're welcome.
    – Videonauth
    May 24 at 10:39










  • Hello, thanka lot for the tips, really appreciated.
    – Elio Basciani
    May 24 at 23:16










  • If my answer solved your problem, you can mark it as accepted by clicking the checkmark beside it.
    – Videonauth
    May 24 at 23:17










  • Yes I know but I still have a problem and I was going to write it in another post.
    – Elio Basciani
    May 24 at 23:19











Your Answer







StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "89"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: false,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);








 

draft saved


draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1039630%2fusers-create-script-from-csv-file%23new-answer', 'question_page');

);

Post as a guest






























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes








up vote
5
down vote



accepted










Simply remove the very last line in your script (also it helps to do a proper indentation to see your errors). Also you forgot to end your last for loop with a done:



#!/bin/bash
filein="proyecto3.csv"
IFS=$'n'

if [ ! -f "$filein" ]
then
echo "Cannot find file $filein"
else
groups=(`cut -d: -f 6 "$filein" | sed 's/ //'`)
fullnames=(`cut -d: -f 1 "$filein"`)
userid=(`cut -d: -f 2 "$filein"`)
usernames=(`cut -d: -f 1 "$filein" | tr [A-Z] [a-z] | awk 'print substr($1,1,1) $2'`)
fi

for group in $groups[*]
do
grep -q "^$group" /etc/group ; let x=$?
if [ $x -eq 1 ]
then
groupadd "$group"
fi
done

x=0 #not sure why you reset x here to zero !?
created=0

for user in $usernames[*]
do
useradd -n -c $fullnames[$x] -g "$groups[$x]" $user 2> /dev/null
if [ $? -eq 0 ]
then
let created=$created+1
fi
done

echo "$usernames[$x]" | passwd --stdin "$user" > /dev/null
echo "Complete. $created accounts have been created."


Up to that I can really advise you to use something like shellcheck on your script ( you can get it from the normal Ubuntu universe repositories).



sudo apt update
sudo apt install shellcheck


It outputs a lot more you can do better on your script:



$ shellcheck test.sh

In test.sh line 9:
groups=(`cut -d: -f 6 "$filein" | sed 's/ //'`)
^-- SC2006: Use $(..) instead of legacy `..`.


In test.sh line 10:
fullnames=(`cut -d: -f 1 "$filein"`)
^-- SC2006: Use $(..) instead of legacy `..`.


In test.sh line 11:
userid=(`cut -d: -f 2 "$filein"`)
^-- SC2034: userid appears unused. Verify it or export it.
^-- SC2006: Use $(..) instead of legacy `..`.


In test.sh line 12:
usernames=(`cut -d: -f 1 "$filein" | tr [A-Z] [a-z] | awk 'print substr($1,1,1) $2'`)
^-- SC2006: Use $(..) instead of legacy `..`.
^-- SC2060: Quote parameters to tr to prevent glob expansion.
^-- SC2060: Quote parameters to tr to prevent glob expansion.


In test.sh line 29:
useradd -n -c $fullnames[$x] -g "$groups[$x]" $user 2> /dev/null
^-- SC2086: Double quote to prevent globbing and word splitting.
^-- SC2086: Double quote to prevent globbing and word splitting.


In test.sh line 30:
if [ $? -eq 0 ]
^-- SC2181: Check exit code directly with e.g. 'if mycmd;', not indirectly with $?.


Alternatively, use the online shellcheck tool...






share|improve this answer






















  • upvoted for the recommendation of shellcheck. Nice tool!
    – muclux
    May 24 at 7:54











  • @muclux You're welcome.
    – Videonauth
    May 24 at 10:39










  • Hello, thanka lot for the tips, really appreciated.
    – Elio Basciani
    May 24 at 23:16










  • If my answer solved your problem, you can mark it as accepted by clicking the checkmark beside it.
    – Videonauth
    May 24 at 23:17










  • Yes I know but I still have a problem and I was going to write it in another post.
    – Elio Basciani
    May 24 at 23:19















up vote
5
down vote



accepted










Simply remove the very last line in your script (also it helps to do a proper indentation to see your errors). Also you forgot to end your last for loop with a done:



#!/bin/bash
filein="proyecto3.csv"
IFS=$'n'

if [ ! -f "$filein" ]
then
echo "Cannot find file $filein"
else
groups=(`cut -d: -f 6 "$filein" | sed 's/ //'`)
fullnames=(`cut -d: -f 1 "$filein"`)
userid=(`cut -d: -f 2 "$filein"`)
usernames=(`cut -d: -f 1 "$filein" | tr [A-Z] [a-z] | awk 'print substr($1,1,1) $2'`)
fi

for group in $groups[*]
do
grep -q "^$group" /etc/group ; let x=$?
if [ $x -eq 1 ]
then
groupadd "$group"
fi
done

x=0 #not sure why you reset x here to zero !?
created=0

for user in $usernames[*]
do
useradd -n -c $fullnames[$x] -g "$groups[$x]" $user 2> /dev/null
if [ $? -eq 0 ]
then
let created=$created+1
fi
done

echo "$usernames[$x]" | passwd --stdin "$user" > /dev/null
echo "Complete. $created accounts have been created."


Up to that I can really advise you to use something like shellcheck on your script ( you can get it from the normal Ubuntu universe repositories).



sudo apt update
sudo apt install shellcheck


It outputs a lot more you can do better on your script:



$ shellcheck test.sh

In test.sh line 9:
groups=(`cut -d: -f 6 "$filein" | sed 's/ //'`)
^-- SC2006: Use $(..) instead of legacy `..`.


In test.sh line 10:
fullnames=(`cut -d: -f 1 "$filein"`)
^-- SC2006: Use $(..) instead of legacy `..`.


In test.sh line 11:
userid=(`cut -d: -f 2 "$filein"`)
^-- SC2034: userid appears unused. Verify it or export it.
^-- SC2006: Use $(..) instead of legacy `..`.


In test.sh line 12:
usernames=(`cut -d: -f 1 "$filein" | tr [A-Z] [a-z] | awk 'print substr($1,1,1) $2'`)
^-- SC2006: Use $(..) instead of legacy `..`.
^-- SC2060: Quote parameters to tr to prevent glob expansion.
^-- SC2060: Quote parameters to tr to prevent glob expansion.


In test.sh line 29:
useradd -n -c $fullnames[$x] -g "$groups[$x]" $user 2> /dev/null
^-- SC2086: Double quote to prevent globbing and word splitting.
^-- SC2086: Double quote to prevent globbing and word splitting.


In test.sh line 30:
if [ $? -eq 0 ]
^-- SC2181: Check exit code directly with e.g. 'if mycmd;', not indirectly with $?.


Alternatively, use the online shellcheck tool...






share|improve this answer






















  • upvoted for the recommendation of shellcheck. Nice tool!
    – muclux
    May 24 at 7:54











  • @muclux You're welcome.
    – Videonauth
    May 24 at 10:39










  • Hello, thanka lot for the tips, really appreciated.
    – Elio Basciani
    May 24 at 23:16










  • If my answer solved your problem, you can mark it as accepted by clicking the checkmark beside it.
    – Videonauth
    May 24 at 23:17










  • Yes I know but I still have a problem and I was going to write it in another post.
    – Elio Basciani
    May 24 at 23:19













up vote
5
down vote



accepted







up vote
5
down vote



accepted






Simply remove the very last line in your script (also it helps to do a proper indentation to see your errors). Also you forgot to end your last for loop with a done:



#!/bin/bash
filein="proyecto3.csv"
IFS=$'n'

if [ ! -f "$filein" ]
then
echo "Cannot find file $filein"
else
groups=(`cut -d: -f 6 "$filein" | sed 's/ //'`)
fullnames=(`cut -d: -f 1 "$filein"`)
userid=(`cut -d: -f 2 "$filein"`)
usernames=(`cut -d: -f 1 "$filein" | tr [A-Z] [a-z] | awk 'print substr($1,1,1) $2'`)
fi

for group in $groups[*]
do
grep -q "^$group" /etc/group ; let x=$?
if [ $x -eq 1 ]
then
groupadd "$group"
fi
done

x=0 #not sure why you reset x here to zero !?
created=0

for user in $usernames[*]
do
useradd -n -c $fullnames[$x] -g "$groups[$x]" $user 2> /dev/null
if [ $? -eq 0 ]
then
let created=$created+1
fi
done

echo "$usernames[$x]" | passwd --stdin "$user" > /dev/null
echo "Complete. $created accounts have been created."


Up to that I can really advise you to use something like shellcheck on your script ( you can get it from the normal Ubuntu universe repositories).



sudo apt update
sudo apt install shellcheck


It outputs a lot more you can do better on your script:



$ shellcheck test.sh

In test.sh line 9:
groups=(`cut -d: -f 6 "$filein" | sed 's/ //'`)
^-- SC2006: Use $(..) instead of legacy `..`.


In test.sh line 10:
fullnames=(`cut -d: -f 1 "$filein"`)
^-- SC2006: Use $(..) instead of legacy `..`.


In test.sh line 11:
userid=(`cut -d: -f 2 "$filein"`)
^-- SC2034: userid appears unused. Verify it or export it.
^-- SC2006: Use $(..) instead of legacy `..`.


In test.sh line 12:
usernames=(`cut -d: -f 1 "$filein" | tr [A-Z] [a-z] | awk 'print substr($1,1,1) $2'`)
^-- SC2006: Use $(..) instead of legacy `..`.
^-- SC2060: Quote parameters to tr to prevent glob expansion.
^-- SC2060: Quote parameters to tr to prevent glob expansion.


In test.sh line 29:
useradd -n -c $fullnames[$x] -g "$groups[$x]" $user 2> /dev/null
^-- SC2086: Double quote to prevent globbing and word splitting.
^-- SC2086: Double quote to prevent globbing and word splitting.


In test.sh line 30:
if [ $? -eq 0 ]
^-- SC2181: Check exit code directly with e.g. 'if mycmd;', not indirectly with $?.


Alternatively, use the online shellcheck tool...






share|improve this answer














Simply remove the very last line in your script (also it helps to do a proper indentation to see your errors). Also you forgot to end your last for loop with a done:



#!/bin/bash
filein="proyecto3.csv"
IFS=$'n'

if [ ! -f "$filein" ]
then
echo "Cannot find file $filein"
else
groups=(`cut -d: -f 6 "$filein" | sed 's/ //'`)
fullnames=(`cut -d: -f 1 "$filein"`)
userid=(`cut -d: -f 2 "$filein"`)
usernames=(`cut -d: -f 1 "$filein" | tr [A-Z] [a-z] | awk 'print substr($1,1,1) $2'`)
fi

for group in $groups[*]
do
grep -q "^$group" /etc/group ; let x=$?
if [ $x -eq 1 ]
then
groupadd "$group"
fi
done

x=0 #not sure why you reset x here to zero !?
created=0

for user in $usernames[*]
do
useradd -n -c $fullnames[$x] -g "$groups[$x]" $user 2> /dev/null
if [ $? -eq 0 ]
then
let created=$created+1
fi
done

echo "$usernames[$x]" | passwd --stdin "$user" > /dev/null
echo "Complete. $created accounts have been created."


Up to that I can really advise you to use something like shellcheck on your script ( you can get it from the normal Ubuntu universe repositories).



sudo apt update
sudo apt install shellcheck


It outputs a lot more you can do better on your script:



$ shellcheck test.sh

In test.sh line 9:
groups=(`cut -d: -f 6 "$filein" | sed 's/ //'`)
^-- SC2006: Use $(..) instead of legacy `..`.


In test.sh line 10:
fullnames=(`cut -d: -f 1 "$filein"`)
^-- SC2006: Use $(..) instead of legacy `..`.


In test.sh line 11:
userid=(`cut -d: -f 2 "$filein"`)
^-- SC2034: userid appears unused. Verify it or export it.
^-- SC2006: Use $(..) instead of legacy `..`.


In test.sh line 12:
usernames=(`cut -d: -f 1 "$filein" | tr [A-Z] [a-z] | awk 'print substr($1,1,1) $2'`)
^-- SC2006: Use $(..) instead of legacy `..`.
^-- SC2060: Quote parameters to tr to prevent glob expansion.
^-- SC2060: Quote parameters to tr to prevent glob expansion.


In test.sh line 29:
useradd -n -c $fullnames[$x] -g "$groups[$x]" $user 2> /dev/null
^-- SC2086: Double quote to prevent globbing and word splitting.
^-- SC2086: Double quote to prevent globbing and word splitting.


In test.sh line 30:
if [ $? -eq 0 ]
^-- SC2181: Check exit code directly with e.g. 'if mycmd;', not indirectly with $?.


Alternatively, use the online shellcheck tool...







share|improve this answer














share|improve this answer



share|improve this answer








edited May 25 at 18:22









Fabby

23.7k1351147




23.7k1351147










answered May 24 at 6:29









Videonauth

21.7k116495




21.7k116495











  • upvoted for the recommendation of shellcheck. Nice tool!
    – muclux
    May 24 at 7:54











  • @muclux You're welcome.
    – Videonauth
    May 24 at 10:39










  • Hello, thanka lot for the tips, really appreciated.
    – Elio Basciani
    May 24 at 23:16










  • If my answer solved your problem, you can mark it as accepted by clicking the checkmark beside it.
    – Videonauth
    May 24 at 23:17










  • Yes I know but I still have a problem and I was going to write it in another post.
    – Elio Basciani
    May 24 at 23:19

















  • upvoted for the recommendation of shellcheck. Nice tool!
    – muclux
    May 24 at 7:54











  • @muclux You're welcome.
    – Videonauth
    May 24 at 10:39










  • Hello, thanka lot for the tips, really appreciated.
    – Elio Basciani
    May 24 at 23:16










  • If my answer solved your problem, you can mark it as accepted by clicking the checkmark beside it.
    – Videonauth
    May 24 at 23:17










  • Yes I know but I still have a problem and I was going to write it in another post.
    – Elio Basciani
    May 24 at 23:19
















upvoted for the recommendation of shellcheck. Nice tool!
– muclux
May 24 at 7:54





upvoted for the recommendation of shellcheck. Nice tool!
– muclux
May 24 at 7:54













@muclux You're welcome.
– Videonauth
May 24 at 10:39




@muclux You're welcome.
– Videonauth
May 24 at 10:39












Hello, thanka lot for the tips, really appreciated.
– Elio Basciani
May 24 at 23:16




Hello, thanka lot for the tips, really appreciated.
– Elio Basciani
May 24 at 23:16












If my answer solved your problem, you can mark it as accepted by clicking the checkmark beside it.
– Videonauth
May 24 at 23:17




If my answer solved your problem, you can mark it as accepted by clicking the checkmark beside it.
– Videonauth
May 24 at 23:17












Yes I know but I still have a problem and I was going to write it in another post.
– Elio Basciani
May 24 at 23:19





Yes I know but I still have a problem and I was going to write it in another post.
– Elio Basciani
May 24 at 23:19













 

draft saved


draft discarded


























 


draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1039630%2fusers-create-script-from-csv-file%23new-answer', 'question_page');

);

Post as a guest













































































Popular posts from this blog

pylint3 and pip3 broken

Missing snmpget and snmpwalk

How to enroll fingerprints to Ubuntu 17.10 with VFS491