mirror of
https://github.com/ChrisTitusTech/linutil.git
synced 2024-12-23 20:09:44 +00:00
samba ssh setup script added
This commit is contained in:
parent
71beabd6d6
commit
ea9d6d7ddc
201
tabs/system-setup/5-samba-ssh-setup.sh
Executable file
201
tabs/system-setup/5-samba-ssh-setup.sh
Executable file
|
@ -0,0 +1,201 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
# Load common script functions
|
||||
. ../common-script.sh
|
||||
|
||||
# Function to install packages based on the package manager
|
||||
install_package() {
|
||||
PACKAGE=$1
|
||||
if ! command_exists "$PACKAGE"; then
|
||||
case "$PACKAGER" in
|
||||
pacman)
|
||||
$ESCALATION_TOOL "$PACKAGER" -S --noconfirm "$PACKAGE"
|
||||
;;
|
||||
*)
|
||||
$ESCALATION_TOOL "$PACKAGER" install -y "$PACKAGE"
|
||||
;;
|
||||
esac
|
||||
else
|
||||
echo "$PACKAGE is already installed."
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to setup and configure SSH
|
||||
setup_ssh() {
|
||||
printf "%b\n" "${YELLOW}Setting up SSH...${RC}"
|
||||
|
||||
# Detect package manager and install appropriate SSH package
|
||||
if [ "$PACKAGER" = "apt-get" ]; then
|
||||
install_package openssh-server
|
||||
SSH_SERVICE="ssh"
|
||||
elif [ "$PACKAGER" = "pacman" ]; then
|
||||
install_package openssh
|
||||
SSH_SERVICE="sshd"
|
||||
else
|
||||
install_package openssh-server
|
||||
SSH_SERVICE="sshd"
|
||||
fi
|
||||
|
||||
# Enable and start the appropriate SSH service
|
||||
$ESCALATION_TOOL systemctl enable "$SSH_SERVICE"
|
||||
$ESCALATION_TOOL systemctl start "$SSH_SERVICE"
|
||||
|
||||
# Get the local IP address
|
||||
LOCAL_IP=$(ip -4 addr show | awk '/inet / {print $2}' | tail -n 1)
|
||||
|
||||
printf "%b\n" "${GREEN}Your local IP address is: $LOCAL_IP${RC}"
|
||||
|
||||
# Check if SSH is running
|
||||
if systemctl is-active --quiet "$SSH_SERVICE"; then
|
||||
printf "%b\n" "${GREEN}SSH is up and running.${RC}"
|
||||
else
|
||||
printf "%b\n" "${RED}Failed to start SSH.${RC}"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to setup and configure Samba
|
||||
setup_samba() {
|
||||
printf "%b\n" "${YELLOW}Setting up Samba...${RC}"
|
||||
|
||||
# Install Samba if not installed
|
||||
install_package samba
|
||||
|
||||
SAMBA_CONFIG="/etc/samba/smb.conf"
|
||||
|
||||
if [ -f "$SAMBA_CONFIG" ]; then
|
||||
printf "%b\n" "${YELLOW}Samba configuration file already exists at $SAMBA_CONFIG.${RC}"
|
||||
echo "Do you want to modify the existing Samba configuration? (yes/no): "
|
||||
read MODIFY_SAMBA
|
||||
if [ "$MODIFY_SAMBA" = "yes" ]; then
|
||||
$ESCALATION_TOOL nano "$SAMBA_CONFIG"
|
||||
fi
|
||||
else
|
||||
printf "%b\n" "${YELLOW}No existing Samba configuration found. Setting up a new one...${RC}"
|
||||
|
||||
# Prompt user for shared directory path
|
||||
echo "Enter the path for the Samba share (default: /srv/samba/share): "
|
||||
read SHARED_DIR
|
||||
SHARED_DIR=${SHARED_DIR:-/srv/samba/share}
|
||||
|
||||
# Create the shared directory if it doesn't exist
|
||||
$ESCALATION_TOOL mkdir -p "$SHARED_DIR"
|
||||
$ESCALATION_TOOL chmod -R 0777 "$SHARED_DIR"
|
||||
|
||||
# Add a new Samba user
|
||||
echo "Enter Samba username: "
|
||||
read SAMBA_USER
|
||||
|
||||
# Loop until the passwords match
|
||||
while true; do
|
||||
echo "Enter Samba password: "
|
||||
stty -echo
|
||||
read SAMBA_PASSWORD
|
||||
stty echo
|
||||
echo "Confirm Samba password: "
|
||||
stty -echo
|
||||
read SAMBA_PASSWORD_CONFIRM
|
||||
stty echo
|
||||
echo ""
|
||||
if [ "$SAMBA_PASSWORD" = "$SAMBA_PASSWORD_CONFIRM" ]; then
|
||||
printf "%b\n" "${GREEN}Passwords match.${RC}"
|
||||
break
|
||||
else
|
||||
printf "%b\n" "${RED}Passwords do not match. Please try again.${RC}"
|
||||
fi
|
||||
done
|
||||
|
||||
# Add the user and set the password
|
||||
$ESCALATION_TOOL smbpasswd -a "$SAMBA_USER"
|
||||
|
||||
# Configure Samba settings
|
||||
$ESCALATION_TOOL sh -c "cat > $SAMBA_CONFIG" <<EOL
|
||||
[global]
|
||||
workgroup = WORKGROUP
|
||||
server string = Samba Server
|
||||
security = user
|
||||
map to guest = bad user
|
||||
dns proxy = no
|
||||
|
||||
[Share]
|
||||
path = $SHARED_DIR
|
||||
browsable = yes
|
||||
writable = yes
|
||||
guest ok = no
|
||||
read only = no
|
||||
EOL
|
||||
fi
|
||||
|
||||
# Enable and start Samba services
|
||||
$ESCALATION_TOOL systemctl enable smb nmb
|
||||
$ESCALATION_TOOL systemctl start smb nmb
|
||||
|
||||
# Check if Samba is running
|
||||
if systemctl is-active --quiet smb && systemctl is-active --quiet nmb; then
|
||||
printf "%b\n" "${GREEN}Samba is up and running.${RC}"
|
||||
printf "%b\n" "${YELLOW}Samba share available at: $SHARED_DIR${RC}"
|
||||
else
|
||||
printf "%b\n" "${RED}Failed to start Samba.${RC}"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to configure firewall (optional)
|
||||
configure_firewall() {
|
||||
printf "%b\n" "${BLUE}Configuring firewall...${RC}"
|
||||
|
||||
if command_exists ufw; then
|
||||
$ESCALATION_TOOL ufw allow OpenSSH
|
||||
$ESCALATION_TOOL ufw allow Samba
|
||||
$ESCALATION_TOOL ufw enable
|
||||
printf "%b\n" "${GREEN}Firewall configured for SSH and Samba.${RC}"
|
||||
else
|
||||
printf "%b\n" "${YELLOW}UFW is not installed. Skipping firewall configuration.${RC}"
|
||||
fi
|
||||
}
|
||||
|
||||
setup_ssh_samba(){
|
||||
echo "Samba and SSH Setup Script"
|
||||
echo "----------------------------"
|
||||
clear
|
||||
|
||||
# Display menu
|
||||
echo "Select an option:"
|
||||
echo "1. Setup SSH"
|
||||
echo "2. Setup Samba"
|
||||
echo "3. Configure Firewall"
|
||||
echo "4. Setup All"
|
||||
echo "5. Exit"
|
||||
|
||||
echo "Enter your choice [1-5]: "
|
||||
read CHOICE
|
||||
|
||||
case "$CHOICE" in
|
||||
1)
|
||||
setup_ssh
|
||||
;;
|
||||
2)
|
||||
setup_samba
|
||||
;;
|
||||
3)
|
||||
configure_firewall
|
||||
;;
|
||||
4)
|
||||
setup_ssh
|
||||
setup_samba
|
||||
configure_firewall
|
||||
;;
|
||||
5)
|
||||
printf "%b\n" "${GREEN}Exiting.${RC}"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
printf "%b\n" "${RED}Invalid choice. Please enter a number between 1 and 5.${RC}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
printf "%b\n" "${GREEN}Setup completed.${RC}"
|
||||
}
|
||||
|
||||
checkEnv
|
||||
checkEscalationTool
|
||||
setup_ssh_samba
|
|
@ -51,3 +51,7 @@ script = "3-global-theme.sh"
|
|||
[[data]]
|
||||
name = "Remove Snaps"
|
||||
script = "4-remove-snaps.sh"
|
||||
|
||||
[[data]]
|
||||
name = "SSH-Samba Setup"
|
||||
script = "5-samba-ssh-setup.sh"
|
Loading…
Reference in New Issue
Block a user