Skip to content

Commit 888cfbf

Browse files
committed
feat: refine TMOUT configuration in ssh_timeout script to prevent duplicates and improve user experience
1 parent 2d468dc commit 888cfbf

File tree

1 file changed

+17
-45
lines changed

1 file changed

+17
-45
lines changed

setup/system/ssh_timeout.sh

Lines changed: 17 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,12 @@ echo ''
1919

2020
echo '1️⃣ Setting TMOUT for all users...'
2121

22-
# Add TMOUT to /etc/profile.d/ for bash users
22+
# Remove old TMOUT entries to avoid duplicates and readonly errors
23+
sudo sed -i '/TMOUT/d' /etc/profile 2>/dev/null
24+
sudo sed -i '/Auto logout after/d' /etc/profile 2>/dev/null
25+
sudo rm -f /etc/profile.d/ssh-timeout.sh 2>/dev/null
26+
27+
# Add TMOUT to /etc/profile.d/ for bash users (ONLY place for bash)
2328
sudo tee /etc/profile.d/ssh-timeout.sh > /dev/null <<EOF
2429
# Auto logout after 5 minutes of inactivity
2530
TMOUT=$TIMEOUT_SECONDS
@@ -30,65 +35,32 @@ EOF
3035
sudo chmod +x /etc/profile.d/ssh-timeout.sh
3136
echo '✓ Created /etc/profile.d/ssh-timeout.sh (for bash)'
3237

33-
# Also add to /etc/profile for compatibility
34-
if ! grep -q "^TMOUT=" /etc/profile 2>/dev/null; then
35-
echo "" | sudo tee -a /etc/profile > /dev/null
36-
echo "# Auto logout after 5 minutes of inactivity" | sudo tee -a /etc/profile > /dev/null
37-
echo "TMOUT=$TIMEOUT_SECONDS" | sudo tee -a /etc/profile > /dev/null
38-
echo "readonly TMOUT" | sudo tee -a /etc/profile > /dev/null
39-
echo "export TMOUT" | sudo tee -a /etc/profile > /dev/null
40-
echo '✓ Added TMOUT to /etc/profile'
41-
else
42-
echo '✓ TMOUT already exists in /etc/profile'
43-
fi
44-
4538
# Add TMOUT for ZSH users - ZSH doesn't load /etc/profile.d/ by default
4639
echo ''
4740
echo '1️⃣.1 Setting TMOUT for ZSH users...'
4841

4942
# Create /etc/zsh directory if not exists
5043
sudo mkdir -p /etc/zsh
5144

52-
# Add to /etc/zsh/zshenv (loaded for all zsh sessions)
53-
if ! grep -q "^TMOUT=" /etc/zsh/zshenv 2>/dev/null; then
54-
sudo tee -a /etc/zsh/zshenv > /dev/null <<EOF
55-
56-
# Auto logout after 5 minutes of inactivity
57-
TMOUT=$TIMEOUT_SECONDS
58-
readonly TMOUT
59-
export TMOUT
60-
EOF
61-
echo '✓ Added TMOUT to /etc/zsh/zshenv'
62-
else
63-
echo '✓ TMOUT already exists in /etc/zsh/zshenv'
64-
fi
45+
# Remove old TMOUT entries to avoid duplicates and readonly errors
46+
sudo sed -i '/TMOUT/d' /etc/zsh/zshenv 2>/dev/null
47+
sudo sed -i '/TMOUT/d' /etc/zsh/zshrc 2>/dev/null
48+
sudo sed -i '/Auto logout after/d' /etc/zsh/zshenv 2>/dev/null
49+
sudo sed -i '/Auto logout after/d' /etc/zsh/zshrc 2>/dev/null
6550

66-
# Also add to /etc/zsh/zshrc for interactive shells
67-
if ! grep -q "^TMOUT=" /etc/zsh/zshrc 2>/dev/null; then
68-
sudo tee -a /etc/zsh/zshrc > /dev/null <<EOF
51+
# Add to /etc/zsh/zshenv ONLY (loaded first for all zsh sessions)
52+
sudo tee -a /etc/zsh/zshenv > /dev/null <<EOF
6953
7054
# Auto logout after 5 minutes of inactivity
7155
TMOUT=$TIMEOUT_SECONDS
7256
readonly TMOUT
7357
export TMOUT
7458
EOF
75-
echo '✓ Added TMOUT to /etc/zsh/zshrc'
76-
else
77-
echo '✓ TMOUT already exists in /etc/zsh/zshrc'
78-
fi
79-
80-
# Add to /etc/skel/.zshrc for new users
81-
if [ -f /etc/skel/.zshrc ]; then
82-
if ! grep -q "^TMOUT=" /etc/skel/.zshrc 2>/dev/null; then
83-
sudo tee -a /etc/skel/.zshrc > /dev/null <<EOF
59+
echo '✓ Added TMOUT to /etc/zsh/zshenv'
8460

85-
# Auto logout after 5 minutes of inactivity
86-
TMOUT=$TIMEOUT_SECONDS
87-
export TMOUT
88-
EOF
89-
echo '✓ Added TMOUT to /etc/skel/.zshrc'
90-
fi
91-
fi
61+
# Remove TMOUT from /etc/skel/.zshrc if exists (avoid conflicts)
62+
sudo sed -i '/TMOUT/d' /etc/skel/.zshrc 2>/dev/null
63+
sudo sed -i '/Auto logout after/d' /etc/skel/.zshrc 2>/dev/null
9264

9365
# ============ Method 2: ClientAlive (Network keepalive) ============
9466
# Keep this to ensure disconnection when network has issues

0 commit comments

Comments
 (0)