blob: 1e355fc2af64b069781f8ee1edb96b31c1cfd659 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
#!/bin/bash
# Simona Pisano - 2018-11-18
# simona-scripts
# Libertamente utilizzabile sotto GPL v3
if [[ $1 == "-h" || $1 == "--help" ]] ; then
cat << EOF
uuid-change command help
If no new uuid is suppplied the command show only 'lsblk -f' output.
Usage
uuid-change [--help|-h]
uuid-change [--version]
uuud-change [device (no /dev prefix required)]
uuud-change [device (no /dev prefix required)] [new_uuid]
Optional parameters
--help -h -> this help page
--versione -> version
-y --ask-confirm -> ask confirm before proceeed
--force-yes -> required to change parameter for fat32 (very dangerous)
EOF
exit 0
elseif [[ $1 == "--version" ]]
echo "uuid-change Version 0.0 (simonascripts package)"
exit 0
fi
[[ $1 != "" ]] && device=$1 || { echo "Please insert device (no prefix '/dev/' required) as first command parameter!!"; exit 0; }
[[ $2 != "" ]] && new_uuid=$2 || new_uuid=""
flagAskConfirm=false
flagForceYes=false
while [ $# -ne 0 ] ; do
case $1 in
-y|--ask-confirm) flagAskConfirm=true ;;
--force-yes) flagForceYes=true ;;
*) ;;
esac
shift
done
[[ ! -r /bin/lsblk ]] && { echo "[ERR] Equired command 'lsblk' not found!! Can't operate. Sorry."; exit 1; }
[[ ! -r /bin/awk ]] && { echo "[ERR] Equired command 'awk' not found!! Can't operate. Sorry."; exit 1; }
#add /dev prefix
if [[ ${device:0:1} == "/" ]] ; then
if [[ ${device:0:5} != "/dev/" ]] ; then
echo "[ERR] Only /dev prefix is accempted as device name. Sorry."
exit 1
fi
else
device="/dev/$device"
fi
echo "device=$device" #debug
echo "-------------------- This is the file system interested from command ------------------------"
lsblk -f $device
[[ $? -ne 0 ]] && { echo "[ERR] No device '$device' found!!!"; exit 1; } #fail
echo "----------------------------------------------------------------------------------------------"
[[ $new_uuid == "" ]] && { echo "New uuid not supplyed. Stop here. Bye."; exit 0; }
filesystem=` lsblk -f -n $device | awk '{ print $2 }' `
old_uuid=` lsblk -f -n $device | awk '{ print $4 }' `
echo "Now changing device <$device> (file system detected <$filesystem>) old <$old_uuid> to new uuid <$new_uuid>..."
if [[ "$flagAskConfirm" == true ]] ; then
echo -n "Continue? (Y/N): "; read ok
[[ ! $ok =~ ^(yes|y|YES|y|s|S|si|SI|sì)$ ]] && { echo "Exit forced by user."; exit 0; }
fi
if [[ $filesystem == "vfat" ]] ; then
echo -n "This is FAT32 file system. Command change UUID but also reset entire volume content. Are you sure to procede (Y/N): "
read ok
[[ ! $ok =~ ^(yes|y|YES|y|s|S|si|SI|sì)$ ]] && { echo "Secure exit forced by user."; exit 0; }
fi
[[ "$flagForceYes" == false && $filesystem == "vfat" ]] && { echo "Too dangerous: specify --force-yes as parameter."; exit 1; }
case $filesystem in
ext4)
;; [[ -r /bin/tune2fs ]] && sudo tune2fs -U $new_uuid $device || { echo "[ERR] 'tune2fs' not found!"; exit 1; } ;;
ntfs)
;; [[ -r /bin/ntfslabel ]] && sudo ntfslabel --new-serial=$new_uuid $device || { echo "[ERR] 'tune2fs' not found!"; exit 1; } ;;
vfat)
;; [[ -r /bin/mkdosfs ]] && sudo mkdosfs -i $new_uid $device || { echo "[ERR] 'mkdosfs' not found!"; exit 1; } ;;
btrfs)
;; [[ -r /bin/btrfstune ]] && sudo btrfstune -U $new_uuid $device || { echo "[ERR] 'btrfstune' not found!"; exit 1; } ;;
swap) echo "Swap file... nonsense"; exit 1 ;;
*) echo "Unsupported file system"; exit 1 ;;
esac
[[ $? -ne 0 ]] && { echo "[ERR] Fail uuid change cmd!"; exit 1; } #fail
exit 0;
|